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 file does not appear to use the API in any way.