Add custom domains to the multitenant site

- Include new gems public_suffix and domainatrix for domain manipulation
and parsing
- Add a uniquely indexed column called custom_domain to Site
- Add a custom_domain field with validation to the admin page. Currently
  doesn't do DNS validation but can be easily extended in the future
- Allow site lookup based on custom_domain
- Redirect non-admin pages to the custom_domain if it exists on lookup
- Refactor controllers so that ApplicationController is the global
  parent controller, and set up a BaseController just for non-multisite
  controllers