[bug 1057617] Fix url data validation

This reworks all "url" field things so that "about:" and "chrome://" are
also valid urls.

* add EnhancedURLValidator, form EnhancedURLField, db model
  EnhancedURLField
* update the Input API to handle incoming "about:" and "chrome://" urls
* update the Input form handling to handle incoming "about:" and
  "chrome://" urls (the code suggests it could handle these already, but
  it seems like it was never tested)
* add a lot of tests for the form EnhancedURLField and the
  EnhancedURLValidator

This covers everything in the bug except the JavaScript URL validation.
That needs to be rewritten to allow for "about:" and "chrome://" urls.

r?