Fixes #8560: Allow fencing HTML and routes off via a feature flag.

The feature flag can be set in the Foreman settings.yaml file or
in a plugin settings within config/settings.plugins.d directory. The
settings format is:

:features:
  :custom_products: false

See the feature flag documentation for how to use it within HTML
and on a route.
Untested:

```javascript
(function () {

    /**
     * @ngdoc service
     * @name Bastion.run:FeatureFlag
     *
     * @description
     *   Handles checking if a given feature is enabled. Provides this functionality on
     *   the root scope and also checks routes to send the user to a 403.
     *
     * @example
     *   HTML:
     *     <button class="btn btn-default"
     *             ng-if="featureEnabled('products.discovery')"
     *             ui-sref="products.discovery.scan">
     *       <i class="icon-screenshot"></i>
     *       {{ "Repo Discovery" | translate }}
     *     </button>         
     */
    function FeatureFlag($rootScope, $window, Features) {

        $rootScope.featureEnabled = function (toState) {
            var enabled = true;

            if (Features[toState] !== undefined) {
                enabled = Features[toState];
            }

            return enabled;
        };

        $rootScope.$on('$stateChangeStart', function (event, toState) {
            if (!$rootScope.featureEnabled(toState)) {
                $window.location.href = '/katello/403';
            }
        });
    }

    angular
        .module('Bastion')
        .run(FeatureFlag);

    FeatureFlag.$inject = ['$rootScope', '$window', 'Features'];

})();
```

Basically just using the state name as an identifier instead of creating a new way to refer to the state.