#1743: Begin generating the operator bundle using operator-sdk

* Makefile
 * OPERATOR_VERSION removes -SNAPSHOT suffix as invalid domain for version
   field while executing `operator-sdk generate...`
 * Adds recipes for constructing both the manifests and bundle, adapted
   from the demonstration versions
 * Uses recursive rule-making to avoid duplication and work around
   the limits of controller-gen & operator-sdk

* script/add_licence.sh
 * Script for prepending the licence header to generated files

* script/gen_crd.sh
 * adds config directory for crd generation

* PROJECT
 * Scaffolding configuration for operator-sdk executable

* config
 * root configuration directory for kustomize and operator-sdk
 * samples directory locates the alm-examples used in the bundle manifest
 * rbac directory locates the permissions, cluster-permissions and
   deployments fields in the bundle manifest
 * prometheus directory used for monitoring resources although doesn't seem
   to be applicable at the moment (prometheus-jmx-exporter.yaml is invalid)
 * crd directory locates the CRDs generated in the same manner as that in
   the deploy directory
 * All resources have to be copied in - cannot use symlinks and both
   controller-gen and operator-sdk will error

* Limitations of process:
 * controller-gen cannot generate CRDs across modules (directory containing
   go.mod) so gen-crds.sh changes directory into pkg/apis in order to
   execute successfully
 * operator-sdk has to execute in root of directory and cannot generate
   across modules. Also, seems to have a duplication problem if 2 apis
   are being processed with one dependent on the other. So copy apis 1 at
   a time & process

* Result is `make bundle` will regenerate csv manifests (if required) then
  create a bundle directory containing these manifests and other artifacts
  necessary for deploying an image for the Operator Hub and OLM catalogue
45 files changed