feat: allow for custom registry

This patch adds a simple CLI which can mirror all the images needed
as well as allow for simple override for `atmosphere_image_repository`
for all images.
diff --git a/pyproject.toml b/pyproject.toml
index 4d90329..96292e7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,39 +6,59 @@
 readme = "README.md"
 
 [tool.poetry.scripts]
+atmosphere = "atmosphere.cmd.cli:main"
 atmosphere-operator = "atmosphere.cmd.operator:main"
 
 [tool.poetry.dependencies]
 python = "^3.10"
-schematics = "^2.1.1"
-pykube-ng = "^22.7.0"
-structlog = "^22.1.0"
-rich = "^12.5.1"
-better-exceptions = "^0.3.3"
-mergedeep = "^1.3.4"
-taskflow = "^5.0.0"
-eventlet = "^0.33.1"
-tomli = "^2.0.1"
-tomli-w = "^1.0.0"
-jmespath = "^1.0.1"
-jsonnet = "^0.18.0"
-kopf = {extras = ["uvloop"], version = "^1.36.0"}
-openstacksdk = "^0.103.0"
-certbuilder = "^0.14.2"
+click = "^8.1.3"
+schematics = { version = "^2.1.1", optional = true }
+pykube-ng = { version = "^22.7.0", optional = true }
+structlog = { version = "^22.1.0", optional = true }
+mergedeep = { version = "^1.3.4", optional = true }
+taskflow = { version = "^5.0.0", optional = true }
+eventlet = { version = "^0.33.1", optional = true }
+tomli = { version = "^2.0.1", optional = true }
+jsonnet = { version = "^0.18.0", optional = true }
+kopf = { version = "^1.36.0", optional = true, extras = ["uvloop"] }
+openstacksdk = { version = "^0.103.0", optional = true }
+certbuilder = { version = "^0.14.2", optional = true }
+"oslo.log" = "^5.0.2"
+"oslo.config" = "^9.0.0"
+"oslo.concurrency" = "^5.0.1"
+docker-image-py = "^0.1.12"
+
+[tool.poetry.extras]
+operator = [
+  "schematics",
+  "pykube-ng",
+  "structlog",
+  "rich",
+  "better-exceptions",
+  "mergedeep",
+  "taskflow",
+  "eventlet",
+  "tomli",
+  "jsonnet",
+  "kopf",
+  "openstacksdk",
+  "certbuilder",
+]
 
 [tool.poetry.group.dev.dependencies]
-pytest = "^7.1.3"
-pytest-mock = "^3.8.2"
-pytest-cov = "^3.0.0"
-pytest-kind = "^22.9.0"
+ansible-core = "^2.13.4"
 flake8 = "^5.0.4"
 flake8-isort = "^4.2.0"
-python-on-whales = "^0.52.0"
 Jinja2 = "^3.1.2"
 jinja2-base64-filters = "^0.1.4"
 molecule = "^4.0.1"
-ansible-core = "^2.13.4"
-
+jmespath = "^1.0.1"
+pytest = "^7.1.3"
+pytest-cov = "^3.0.0"
+pytest-kind = "^22.9.0"
+pytest-mock = "^3.8.2"
+python-on-whales = "^0.52.0"
+tomli-w = "^1.0.0"
 
 [tool.poetry.group.docs.dependencies]
 mkdocs-material = "^8.5.7"
@@ -51,10 +71,7 @@
 profile = "black"
 
 [tool.pytest.ini_options]
-addopts = [
-  "--cov=atmosphere",
-  "--cov-report=term-missing",
-]
+addopts = ["--cov=atmosphere", "--cov-report=term-missing"]
 filterwarnings = [
   "ignore::DeprecationWarning",
   "ignore::schematics.deprecated.SchematicsDeprecationWarning",