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
I think every time we manipulate the network concept, we should use the `bitcore.testnet` and `bitcore.livenet` objects, not the strings `"livenet"` and `"testnet"`. In any case, that can be changed project-wide in another PR. I added a task to the tasklist (https://github.com/bitpay/bitcore/issues/563)