Modal form cleanup

We repeat a lot of templating code in our forms. It makes sense to abstract
some of this repetitive logic and reduce the clutter. This patch give users
the ability to specify modal id, modal header, form id, and a submit url.

Change-Id: Ibcc270b189cf3f53065f163a325ebef07b875beb
Implements: blueprint form-template-to-view
Restyled sidebar to resemble UX guidelines

Partially-Implements: blueprint navigation-styling
Closes-Bug: #1365680

Change-Id: I37e603ee5ba310ba5f18b69df4c1cd6fa529c1d9
Add new directory structure for page objects

Creates new directory structure for page objects that reflects horizon main
menu. Pageobjects should be located in the directories according to their
location in the main menu.

Partially implements blueprint: selenium-integration-testing
Closes-Bug: #1348232

Change-Id: Ibed2581721be114d696673038d1381a6002aef58
Imported Translations from Transifex

For more information about this automatic import see:
https://wiki.openstack.org/wiki/Translations/Infrastructure

Change-Id: I14bab2c404dbc3f33e8c192d21b0def37485e667
Merge "Add new directory structure for page objects"
Merge "Imported Translations from Transifex"
Merge "Modal form cleanup"
Handle situation when endpoint deleted

when the cinder services exist but endpoint deleted, accessing
to /project/access_and_security will cause an error:
IndexError: list index out of range

Change-Id: Iad7f72cd5247f33245f25a8092c40a4d3a04cef9
Partial-Bug: #1394900
KeyError on getting PanelGroup

When trying to get a PanelGroup at runtime and
you specify a nonregistered panel, a KeyError is
thrown when calling Dashboard.get_panel_group.
Retrieving values from a Dict using the [] formulation
results in a KeyError for non existent keys.  Using
Dict#get returns None for non existent keys which is
what this change does.

This is relevant to the dynamic panel efforts going on.

Closes-Bug: 1396682
Change-Id: I532c3be04fdd229dfd8e01b68320b2eecb6fd866
Prevent leaking `target` info into subsequent `policy.check()` calls

Due to mutable dictionary being used as the default `target` argument
value the first target calculated from scratch in POLICY_CHECK
function will be used for all subsequent calls to POLICY_CHECK with 2
arguments. The wrong `target` can either lead to a reduced set of
operations on an entity for a given user, or to enlarged one. Due to
independent policy checks at each service's side this doesn't pose a
serious security breach, but can lead to weird UX behaviour.

Change-Id: I744fac28de0fb7060b50c5db689e74631a628c88
Closes-Bug: #1396544
Merge "Prevent leaking `target` info into subsequent `policy.check()` calls"
Merge "KeyError on getting PanelGroup"
Merge "Handle situation when endpoint deleted"
Merge "Restyled sidebar to resemble UX guidelines"