Working PoC for variable content

- Adds a new service, AgTemplateInjector, that can fetch (and cache) a template,
  replace an element's contents with it, and then bind the element to a provided
  scope.
- Modified ag-tabs directive:
  - ag-tabs-pane now defines a controller that aggregates "watchers" via an
    `addWatcher` method; a `getWatchers()` method on the scope allows access to the
    watchers.
  - new sub-directive of ag-tabs-pane, ag-tabs-pane-variable-content. This
    directive requires a content-template attribute, and optionally an
    empty-template attribute. It registers two methods on its scope, `select()`
    and `deselect()`, which call out to AgTemplateInjector methods. It then
    registers itself as a watcher on the parent ag-tabs-pane instance.
  - ag-tabs was modified to loop through a pane's watchers and call either
    `select()` or `deselect()` on each, based on the operation.

Essentially, with this in place, the DOM for a tab is destroyed when
deselected, and rebuilt when selected.
Incorporated tabs changes into markup

- Incorporated ag-tab-pane-variable-content into all tab views, and tested that
  the DOM was being manipulated correctly.
- Modified ag-template-injector to allow an "onload" expression to evaluate into
  the current scope when requested.
- Incorporated ag-template-injector into ag-collapse; still reviewing usage.
Initial working conditional templates in ag-collapse

- Introduces optional functionality in collapse-show directive:
  'default-template' and 'toggled-template' attributes. If both are set, then
  the content displayed depends on the evaluation of the criteria.
- Integrated into content-negotiation screen.
- TODO: only display collapse content when expanded.
Removed collapse-body-variable-content

- Will not be using.
Criteria-based collapses for auth, db-adapters

- Created new directive:
  `ag-conditional-include condition="expression" src="template path"`
  If condition evaluates true, the template path is included, injected, and
  bound to the current scope; if not, blank content is displayed.
- Auth screen uses the above to determine which auth content to display.
- DB Adapters screen adapted to use collapse-show directive with template
  attributes.
- DB Adapters new/edit forms updated to replace "password" input types with
  "text". For some reason, "password" was causing browser segfaults.
  Additionally, we display the password in plain text on the view screen
  anyways.
Use templated collapse-show directive in REST/RPC displays

- Uses the templated form of collapse-show to allow displaying only the DOM
  necessary for the currently active view.
- TODO:
  - "edit" is no longer sticky, nor are tabs.
Fix source code view for REST services

- Incorrect model used to derive service class names
Working REST service screens (and partial RPC)

- Revisions to ag-collapse to make it more async
- Stop using $state inside event callbacks, when ui-sref would work
- Stop using collapse-flags, when ui-sref would work
- Use conditional includes whenever possible
Standardize cancel buttons in REST/RPC services

- New directive, ag-cancel-edit; used for cancel buttons in all forms
- Not used for cancel button in collapse bar, as scope gets wonky
- RPC service now uses conditional include for remove form
Normalized all settings views for edit/cancel workflow

- Use ui-sref and ag-cancel-edit whenever possible.
  - One place it wasn't was the authentication views, as view/edit states are
    set by directive flags.
- Updated authentication screens to use templated collapse-show directives to
  only display the appropriate content.
- Removed cancelEdit/startEdit scoped functions where possible (everywhere
  except authentication screens).
Rebuilt UI distribution
Added comment to empty-content.html

- grunt does not compile empty HTML files! Added a comment to ensure it lives in
  the distribution build.
Merge branch 'feature/collapse-ui-bootstrap'

Implements several new patterns in the UI in an effort to reduce the number of DOM elements present at any given time, as well as to hopefully boost responsiveness:

- Conditional template loading; only load a template if a condition is met; if later the condition is no longer met, remove the DOM.
- Use ui-sref for state transitions whenever possible; improves reliability of tab/collapse stickiness, as well as performance of state transitions.
- More granular templates whenever possible, to reduce amount of markup in any given template; makes maintenance simpler.
- Use the same edit/cancel patterns throughout all screens at the code and markup level.