Address: consistent namespacing and decode/encode functionality

This is a `3.0.0` PR.

Mostly looking for feedback on the naming and structure behind the `bitcoin.address.[decode/encode]` use cases.

I included the network search inside `decode` rather than in `toOutputScript` because it is very useful to be able to check whether a particular address is on the same network as yourself when verifying it.