Loadsafun!

- Fix colour configuration and increase test coverage.
- Update API;
  - Raise an InvalidSyntax exception if:
  - cursor or centred have an invalid value.
  - stream does not have a block.
  - interface does not have a name.
  - align does not have a value of :left, :right or :centred.
  - Add more documentation.
- Move private methods out of API classes into models.
- Add more documentation.
- Request that Yard shows private methods;
  - (Since I'm documenting them like a good boy.)
- Have a go at a simple integration test.
- Inline #run_once and start to handle interactive vs standalone.
- Only log key presses or messages if configured to.
- Ensure configuration is initialised.
- Add complimentary '--standalone' as alias to '--noninteractive'.
- Add VEDEU_DEBUG and VEDEU_TRACE environment variables;
  - Also, rename VEDEUTERM to VEDEU_TERM.
- Update with details of debugging and environment variables.
- Fixed namespace.
- Move refresh group event registration to own method.
- Add more and fix some tests.
- The colour mode should be sought from Configuration.
- Some work on Configuration;
  - Remove some of the duplicate configuration from Application and into
    Configuration.
  - Change Configuration into a module since we only want one version of it.
  - Application no longer needs options to `.start` since this configuration
    comes from the Terminal.
  - Terminal no longer needs a mode as part of `.open` since this
    configuration comes from Configuration.
  - Remove debug stuff from Application.
  - Update code around Terminal mode- new `.switch_mode!`, `.cooked_mode?`
    and `.raw_mode?` methods make all of this easier.
  - Reorder require statements closer to that which are needed first.
- Make block on API.views required.
  - Add .centre_y and .centre_x from Geometry; and document.
  - Move .centre, .centre_y and .centre_x into Terminal;
  - Also add more documentation to this class.
- Use preferred Yard document linking format.
- Move Trace up require list to make it available sooner.
- API::Interface#line new accepts a value;
    Not passing a block but providing a value creates the necessary content
    automatically.
- Trace is no longer part of API namespace.
- Add #virtual_x method to complement #virtual_y.
- Tab and Shift+Tab to control interface focussing.
- Rather than relying on 0 or NilClass, coerce to Boolean.
- Add return types for methods.