Update test coverage report.
Add Hash160 func to calculate ripemd160(sha256(data)).
Implement Address interface.

Address is a generic interface for any type of "address" a
transaction can be sent to, including but not limited to
pay-to-pubkey, pay-to-pubkey-hash, and pay-to-script-hash.

This change implements Address and concrete types for P2PKH and P2SH
addresses with 100% test coverage.  Pay-to-pubkey support will be
added in the future.

This API is intended to replace the old EncodeAddress/DecodeAddress
functions which are now deprecated.
Use fastsha256 in Hash160.

Rather than using the stdlib sha256, use the Conformal fastsha256 package
for faster hashing.
Refactor some common code in address.go.

Rather than repeating the same code in both the pay-to-pubkey-hash and
pay-to-script-hash encoding, refactor it into separate functions.  This
makes it easier to support new networks, for example, since it can be
changed in one place.
Add a String function to each address.

This allows the addresses to be treated as fmt.Stringer for easy printing.
There is no difference between String and EncodeAddress (in fact String
just calls EncodeAddress).
Add canDecode flag to tests.

This commit adds a new flag to the tests which controls whether or not an
address can be decoded.  This is to support the upcoming public key
address type and possible future addresses which aren't directly
decodable.
Add a new concrete Address for pay-to-pubkey.

This commit adds a new concrete Address interface implementation for
pay-to-pubkey addresses.  It supports uncompressed, compressed, and hybrid
pubkeys.  It also provides a convenience method for converting to a
pay-to-pubkey-hash address.
Add tests for new AddressPubKey type.

More tests are needed and will be completed in future commits.
Add 2014 to copyright dates.
Add NewTLSCertPair to generate a certificate pair.

btcd, btcwallet, and an upcomming standalone tool to generate the TLS
certificates all need a way to generate TLS certificate pairs.  This
function, adapted from the cert gen code in btcd, abstracts this logic
so all programs can reuse the code.

Unlike the older btcd certificate generation code, this new function
allows specifying additional hostnames and IPs to add to the list of
addresses for which the cert is valid.
Update for recent btcwire API changes.
Correct and improve cert generation.

This commit changes three things with cert generation.

- The extended key usage field has been removed since specifying the
  extended key usage field prevents the cert from working with firefox
  even when it specifies it can be used as a server
- Creates a random serial number since browsers like firefox and chrome
  won't accept two certificates with the same issuer and serial number
- Adds the digital signature key usage capability since some validators
  like node.js expect that instead of key encipherment
gofmt