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
`return !!Address.getValidationError(data, network, type)` is equivalent. Is it too cryptic?