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.
Aha. So it's a credentials issue? Ok. This is fine, but add a FIXME explaining this fact and suggesting that `SomeEntity().create(auth={...})` and `SomeEntity().build(auth={...})` be implemented.