Reorganize control-related classes and templates

This merges the modules in ui/field/controls and ui/controls since
they are all used with fields. The ui/charts modules are being left
as is for now until they go through their own refactor.

Templates have been moved to correspond with the module paths. A new
convention has been established to called the primary template containing
the top-level layout, 'layout.html' within a directory for the module.
This can be seen in templates/controls/search.

The Control class has also been simplified and treats undefined as no-ops
when getting and setting values. Previously, values would be silently
overwritten when undefined values would be present when syncing attributes.

The 'constants' module has been defined to declare constants for consistency
across the code base such as delays and timeouts.