Api smoke

Some refactoring and added new ``smoke`` tests using the ``API`` layer.

* Renamed ``smoke/test_smoke.py`` to ``smoke/test_cli_smoke.py`` to reflect that all tests contained within this suite use the CLI layer.
  * Refactored code and updated docstrings.
* Added new ``smoke/test_api_smoke.py`` test suite.
This module does not appear to contain any code which touches the API.