[#1117] Move some validator tests into the right test module

Oops :)
[#1117] Move some helpers into shared test helper data module
[#1117] Add unit tests for user_name_validator()
[#1117] Fix user_password validator

Commit f3165ce (user_update: don't crash on non-string password)
unwittingly changed the behavior of user_password_validator(), causing
some legacy tests to fail:

If the given password is Missing or '' user_password_validator() should
*not* raise Invalid.

Fiux user_password_validator to not raise Invalid in these cases, so
that the tests pass again.
[#1117] Tweak a docstring
[#1117] Refactor and add docstring to user_name_validator

- Add docstring

- Use model.User.get() to find whether a user exists, instead of a lot
  of SQLAlchemy in ckan.logic.

  This should make it easier to unit test user_name_validator() in
  isolation, because the tests will only have to mock one method
  ckan.model.User.get() instead of having to mock several things.

  Also SQLAlchemy should just be in the model anyway, not in the logic.

- Refactor and add code comments to clarify the obscure thing that
  user_name_validator() does with context['user_obj'] on user_update()s.

  This was completely obscure before, now hopefully it's clearer.
  (But it's a bad design anyway, user_create and user_update shouldn't
  be sharing the same user_name_validator function.)

I don't *think* I broke anything by refactoring this (tests
are still passing).
[#1117] Mock ckan.model in user_name_validator() tests

Now that user_name_validator() has been refactored to call
model.User.get() instead of doing its own SQLAlchemy (commit c6b953),
it's really easy to mock ckan.model in the user_name_validator() unit
tests by just mocking the single method ckan.model.User.get().

This means the user_name_validator() unit tests no longer touch the disk
or db or bring in ckan.model.