Changed dns.Msg.Pack to take a slice, or create one on nil.

- Fixed tests to support Msg.Pack([]byte)
Merge remote-tracking branch 'miekg/master'

Conflicts:
	client.go
	dns_test.go
	msg.go
	server.go
	tsig.go

Edits:
	dns_test.go
	parse_test.go
	server.go
dns.Msg.Unpack with mismatch in bytes is now an error

Unpack would see that the offset did not match the length of the input buffer.
We had commented out the println to report this. It is now an error.
Merge remote-tracking branch 'miekg/master'

Conflicts:
	client.go
	msg.go
Merge commit b1f81cc(ray) and a627d88(miekg)

Conflicts:
	dns_test.go
	msg.go
Make the API compatible with miekg/dns: msg.Pack() should accept no parameters

In cloudflare/dns we made msg.Pack(buf) to accept a slice of bytes as
parameter. The idea is bold (ie: dns library should be able to reuse
byte buffers) but making the API incompatible with miekg/dns is a bad
idea. This path rolls back the API change and introduces a separate
Pack variant that accepts a buffer:

    msg.PackWithBuffer([]byte)
Rename PackWithBuffer to PackBuffer
Merge remote-tracking branch 'miekg/master'

Conflicts:
	msg.go
Merge remote-tracking branch 'miekg/master'
Add tests for LOC record String() generation and fix small problems

Added tests for the cmToM function to make sure that it's output is
correct. Modified the way the Altitude is written to a string. Previously,
if the altitude was an exact number of meters it would always be reported
with two decimal places. This is not needed. Conversely if it was not
an exact number of meters the cm were removed.
Merge remote-tracking branch 'miekg/master'
Fix miekg/dns#121 - security vulnerability in ECDSA RRSIG Verify
Fix NewPrivateKey ECDSA parsing, and add test; ref miekg/dns#121