Address: Modified interface so that any instance of Address is valid

- Modifies interface so that any instance of an Address can be assumed to be valid
- Adds documentation to each function
- Moves `fromString`, `fromPubkey` methods to be static (no need to be on newly instantiated objects)
- Adds additional `fromPubkeyHash` and `fromScriptHash` instantiators
- Adds tests coverage to address
can you format the code with js-beautify? if you're using vim, see: https://github.com/Chiel92/vim-autoformat