Add support for bitcoin URIs (BIP21)

Design considerations:
* Only allow creation of valid objects, Immutable interface
* Provide an static method `isValid`
* Provide an static method for parsing bitcoin URIs, thus can be reused by payment protocol
* Amount is converted to satoshis

Closes #604 
Shouldn't be an error! Let's be permissive on everything we accept.