Implement a bitcoin URI parser

This parser follows the BIP 21 standard as closely as possible.
Accept URI's with illegal spaces

Some buggy bitcoin software creates these in the wild.