Refactor the UserManager and commands.

This branch adds consistency to the UserManager.
Primarily around the use of tags to pass the usernames.
Also untangles the API client from the server that was
there with the user manager structs being defined in the
apiserver package (not params).

The commands have been hooked up, and tested manually.

There were several clear changes needed when testing:
 * until we have multiple environments, creating a user
   should cause that user to have access to the environment
 * when adding a user, we should always write out the jenv
   file (until the user is able to login and see themselves)
 * the remove user command has been renamed to disable,
   as it wasn't removing the user at all (this is still todo)
Merge branch 'user-manager-tag-redux' into juju-user-list
Add a method to state to get all the users.
Add apiserver changes to return all users.
Add a list command for users and hook it up.
merge trunk
More refactoring.
Hook it up.
Update the state package with the correct factory args.
Update test.
Tweaks for review comments.
simplify constants
Merge pull request #938 from howbazaar/juju-user-list

Implement 'juju user list'

This branch adds the command 'list' to the 'user' subcommand.

Also introduced is a user friendly date output.
A tabular output writer is used by default (thanks katco).
Also toying with a method of injecting a mock api for testing.