Fix redeclaration of "end" in the asm.

Multiple "end" labels, in different functions, did not work with the Go
1.4 toolchain.

Fixes #30.
diff --git a/encode_amd64.s b/encode_amd64.s
index a91f4ba..93d99ea 100644
--- a/encode_amd64.s
+++ b/encode_amd64.s
@@ -41,14 +41,14 @@
 	MOVW BX, 1(DI)
 	ADDQ $3, DI
 	ADDQ $3, AX
-	JMP  end
+	JMP  emitLiteralEnd
 
 twoBytes:
 	MOVB $0xf0, 0(DI)
 	MOVB BX, 1(DI)
 	ADDQ $2, DI
 	ADDQ $2, AX
-	JMP  end
+	JMP  emitLiteralEnd
 
 oneByte:
 	SHLB $2, BX
@@ -56,7 +56,7 @@
 	ADDQ $1, DI
 	ADDQ $1, AX
 
-end:
+emitLiteralEnd:
 	MOVQ AX, ret+48(FP)
 
 	// copy(dst[i:], lit)
@@ -196,16 +196,16 @@
 cmp1:
 	// In src's tail, compare 1 byte at a time.
 	CMPQ DI, DX
-	JAE  end
+	JAE  extendMatchEnd
 	MOVB (SI), AX
 	MOVB (DI), BX
 	CMPB AX, BX
-	JNE  end
+	JNE  extendMatchEnd
 	ADDQ $1, SI
 	ADDQ $1, DI
 	JMP  cmp1
 
-end:
+extendMatchEnd:
 	// Convert from &src[ret] to ret.
 	SUBQ CX, DI
 	MOVQ DI, ret+40(FP)
@@ -540,7 +540,7 @@
 	MOVQ src_len+32(FP), AX
 	ADDQ DX, AX
 	CMPQ R10, AX
-	JEQ  end
+	JEQ  encodeBlockEnd
 
 	// d += emitLiteral(dst[d:], src[nextEmit:])
 	//
@@ -561,7 +561,7 @@
 	// Finish the "d +=" part of "d += emitLiteral(etc)".
 	ADDQ 48(SP), DI
 
-end:
+encodeBlockEnd:
 	MOVQ dst_base+0(FP), AX
 	SUBQ AX, DI
 	MOVQ DI, d+48(FP)