New Feature: Full host and protocol support

This is an alternative implementation of #131 which is more full featured and includes breaking changes.

### New Features:
* Adds support for specifying a default protocol in `default_url_options`.
* Adds support for specifying a default host in `default_url_options`.
* Adds support for routes which specify a specific protocol.
* Adds support for routes which specify a specific host.
* Adds support for using the `window.location.host` when a host has not been specified.

### Changes:
* `generate_url_link` no longer validates that the `:url_links` config value contains a protocol.

### Breaking Changes:
* Changes expected value of `url_links` to boolean true/false and moves host config value to `default_url_options`.

This PR fixes #127.
@andrewhavens CommonJS is NodeJS format (I think you know about `require` in nodejs).

> In the case of CommonJS, the developer should configure a default host and protocol and they will not have issues.

Yep, but user will have JS code, which will raise errors only when code call js route functions. Not perfect behaviour.