Restyled sidebar to resemble UX guidelines

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

Change-Id: I37e603ee5ba310ba5f18b69df4c1cd6fa529c1d9
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"