Used an arrow for parsing the URL to expose the non-determanism

The prior implementation incorrectly assumed that everyone would
want to default a bad URL as an empty pointer.

This implementation exposes the error case in the form of
a Monad.fail call.
Removed the url_to_pointer function that no one is using.

I kept this for backwards compatibility but no one is using this
so #YOLO.