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.
I don't think this method needs to exist. How about using this as the body of `test_smoke`:

```python
try:
    attrs = entities.User(admin=True).create()
except factory.FactoryError as err:
    self.fail(err)
# Further tests which make use of `attrs`.
```

Here's why I make the suggestion:

* You do not supply any custom credentials when creating this entity. Thus, there is no need to create this code. Also, a better fix may be to add an 'auth' parameter to method `Factory.create`. (As an aside, I do intend on removing the `fields` parameter from `attributes`, `build` and `create`.)
* There is no need to check return codes when creating a new entity, as a `FactoryError` will be raised if the response contains any error messages (common with 422 errors) or cannot be converted to JSON (common with 500 errors).
* `Factory.create` automatically converts the server's response to JSON.