Add fake.py module to mock cloud back-end for testing purposes

Mock classes Identity and Cloud are added.
Add 'data' attr to Cloud to store all resources for reference
Experimentations with fake objects

Useful like this:
    >>> from pumphouse import fake
    >>> c = fake.Cloud(None, None, None)
    >>> c.nova.servers.list()
    []
    >>> c.data
    {'glance': {}, 'keystone': {}, 'nova': {'servers': []}}
Add functions for fake migration

Add tenant, user, secgroup and secgroup rule fake migration functions.
Fix some issues in fucntion Server.create()
Fake resource classes

Add functions to fake Role class.
Add functions to fake FloatingIPBulk class.
Add fake Identity.fetch() function.
Add function Server.add_floating_ip().
Add uuid to all fake resource classes
Add user_id, tenant_id to fake resources according to namespace context
Add functions to get user and tenant ID and random MAC for server
Add dicts with actual attributes to fake User and Network classes
Import fake cloud instead of actual one

TODO(ogelbukh): this should be changed to configurable value
Prepopulate fake cloud data with admin user and tenant
Fix dict attributes references
Fix floating ip handling in fake cloud
Import six and exceptions from OpenStack clients

Import six for compatibility functions.
Import exceptions from OpenStack clients to raise correct exceptions
for handling by migration functions.
Assign _info at AttrDict initialization

This allows to avoid updating _info on every change to existing object.
Add search-related arguments to list() function for compatibility

This feigns the behavior of actual OpenStack clients' list() method
with search-related parameters.
Replicate get() behavior for object's id

OpenStack clients allow to get resource by it's ID or by the resource
object itself. In the case of fake resources, we just return an object
of respective type if it is passed for get.
Better handling of arguments in Server.create()

We could get image and flavor objects as arguments to create() method
instead of their respective IDs. We must get IDs from those objects
in that case.

Handling of the network label is also improved by this commit.
Generate UUIDs for objects correctly

UUIDs were generated once on init of Resource class for a class of
objects. This caused all objects ot that class to have the same UUIID.
We need to generate unique UUID per object instance in create() instead.
Add optional 'setup' arg to 'migrate' subcommand

Allow to create test resources in the source cloud right before
migration has started.