Make UI factories more flexible

As suggested by @sthirugn on #604 and some IRC conversation this is the improvements to make the factories more flexible and let the test writer controls the login and logout.

Examples:

```python
# Automatically login and logout
with Session(self.browser) as session:
    make_org(session, "My org name")
    make_something(session, "My something name")
```

```python
# Controlling when to login and logout
session = Session(self.browser)
# ... do some stuff
session.login()
# ... do other stuff
make_org(session, "My org name")
make_something(session, "My something name")
# ... do more stuff
session.logout()
```