Add 'non_unique' argument to user functions.

* fabtools.user.create
* fabtools.user.modify
* fabtools.require.users.user

When non_unique=True, it allows to create or modify a user account with
a duplicate (non-unique) UID.
Corrects the default value of 'non-unique' agrument.

The default value is now `False`
Add test for creating user with non-unique uid.
Upgrade default pip version to 1.3.1
Add support for Vagrant 1.1 providers in functional tests
Add `fabtools.system.cpus` to get the host's CPU count
Less verbose output
Move OS detection functions to `fabtools.system`
Better support for Red Hat based systems
Improve examples in MySQL documentation [#92]
Fix home dir default behaviour in require.user
Update required Fabric version to 1.5.2 [#94]

We now use the `shell_env` context manager, which was introduced
in 1.5.0, but was missing from `fabric.api` until 1.5.2.

This should fix documentation build issues on Read the Docs.
Uses `SHOW DATABASES` to test existent of database.

The `mysql.user` and `mysql.db` table is used for
access privilege.
see http://dev.mysql.com/doc/refman/5.5/en/grant-table-structure.html

A database owned by root may not exists in the
`mysql.db` table. So `mysql.database_exists` function
may fails if the database is owned by root user.

Use `SHOW DATABASES` instead of `SELECT Db FROM mysql.db`
avoid the problem.
Merge pull request #95 from erning/mysql_db_exists

Uses `SHOW DATABASES` to test existence of MySQL database
Merge pull request #93 from disko/master

Add git.fetch operation and use it in require.git.working_copy.
Fix: non-root users cannot always use ifconfig
Upgrade default Node.js version to 0.10.4
Upgrade default Redis version to 2.6.12
Formatting
Documentation tweaks