Implement #1101, improve API smoke test

Implement #1101. Allow users to write `SomeEntity().build(auth=('username', 'password'))` or `SomeEntity().create(auth=('username', 'password'))`.

* Add necessary business logic to the `Factory` class.
* Add a new test to `test_factory.py` which targets this new functionality.
* Rewrite existing tests and docstrings in `test_factory.py`. The rewritten tests now use the "mock" library, which allows for more concise and mroe readable code. The rewritten docstrings are now more accurate, clear and trim.

Slightly improve the API smoke test. Drop code which is unnecessary due to the features described above. Implement step 2.1 of the smoke test... which promptly fails. A bugzilla bug for this issue is in the works.