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.
Below, you call `entity.info`. However, the `Entity` class does not declare an `info` method.