change address interface to store version byte

The old interface recorded "networkstr" and "typestr", which used more memory
that was really necessary, and was not very extensible. Since it is very common
in the bitcoin world to extend the notion of an address to have different
version bytes, this version makes it a little bit easier to extend by allowing
someone to set any version byte. The only catch is that any address with an
unusual version byte will be considered invalid (although you can still to
toBuffer and toString and whatnot). This may be improved in the future.

Also, from now on I will occassionally add test coverage reports. Generated
with istanbul using the command "istanbul cover _mocha":

=============================== Coverage summary ===============================
Statements   : 91.03% ( 2061/2264 )
Branches     : 75.03% ( 670/893 )
Functions    : 92.65% ( 290/313 )
Lines        : 91.07% ( 2060/2262 )
================================================================================

...eventually I will want to enforce that code coverage must always increase
for a given PR.