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.
* Until I can pass different credentials to the ``create`` method, I need to use ``client.post``.
* All other actions that I'm adding to ``test_smoke`` will pass the credentials from ``new_user`` :)
* As long as I'm using ``client.post`` then I need to check the return codes.