* Rename and extract a bunch of modules into their own files to make it easier to navigate the repository.
* Remove fake versions of `ElixirALE` and `Circuits` from `test/support`.
* Create wrapper modules for `ElixirALE` and `Circuits` modules using `defdelegate` instead.
* Use Elixir 1.10's new `@compile {:no_warn_undefined ...}` directive to inhibit compiler warnings for our optional dependencies.