Extend options for custom flavor sorting when launching instances

Until now, flavors were sorted by RAM, ascending, by default.
An option to override this and use a custom callable instead
was introduced via the CREATE_INSTANCE_FLAVOR_SORT dict in
local_settings.py.

This patch introduces another way of using the
CREATE_INSTANCE_FLAVOR_SORT dict: by providing a flavor attribute.

Change-Id: I5b2819cc3ebc97377e673682d0b2c7ddab94e3d3
Closes-Bug: #1254524
Use memoized_method decorator in views

A lot of horizon's views use the pattern:

    def get_data(self):
        if not hasattr(self, "_data"):
            # Calculate data here.
            self._data = data
        return self._data

This is copy-pasted all over the codebase. It's better to handle that
with a single decorator. In the future, we might even replace it with
some better caching approach.

Closes-bug: #1248230
Change-Id: Id021fccf9032e5068993ec91a7774a5d0fbf29bb
Clean up the hypervisor DataTable members columns

Refactored the class to use filters instead of passing functions.
As noted in the documentation on DataTable. Also corrected a side
effect where a template filter does not check the input value.

Change-Id: I0c4867673611228fbcffa71f65d2e9ed9a1f872e
Closes-Bug: #1203391
Merge "Use memoized_method decorator in views"
Merge "Extend options for custom flavor sorting when launching instances"
Merge "Clean up the hypervisor DataTable members columns"