Cljx support

Summary of changes:

* Move all Ring related functionality to the `bidi.ring` namespace
* Use [cemerick/url](https://github.com/cemerick/url) for encoding/decoding over `java.net.Uri`
* Drop dependency on `ring.util.codec` and add `FormEncodeable` protocol using cemerick/url for cljs support (used for `path-with-query-for`)
* Extend protocols for Clojurescript types

To note: we have had to update the main tests to use more general regex - given the differences between Clojure and Clojurescript. With these changes in, the test suite passes on both hosts.

Internally, the regex is the same between hosts, expect for the 'quotemeta' regex. I did find this npm package [here](https://github.com/substack/quotemeta/blob/master/index.js) for a `\Q \E` JS equivalent. However, I think there needs to be tests in place to ensure this works as intended. The tests still pass when removed currently.