Sphinx changes for readthedocs.org

readthedocs (RTD) automatically builds our documentation. Modules are
imported which means all dependencies needs to be present but as RTD
fails to build things like python-ldap, we instead mock that module.
Other modules, such as Flask, have proven to be really difficult to mock
and they are instead installed.

Part of #283.
Merge branch '283-readthedocs'
Update design doc with regard to Flask vs Twisted

We've stopped using Twisted, so design doc is updated to say it's not as
grand as we originally thought. Give some praise to Flask!
Merge branch 'flask-design-doc'
Fix auth

Authentication was broken when I refactored the xmlrpc class simply
because I wasn't careful enough. This fixes that and cleans up a few
small things.
Merge branch 'xmlrpc-authfix'
Remove 'guest' user from default shipping

We shouldn't ship any default user in the local auth database - it's
better to let the user add one himself.

Given that nipapd only listens on 127.0.0.1 per default it's not a very
big security issue but nonetheless it could raise some concerns ;)

.travis.yml is updated to add a user that can be used for testing and
all unittests are updated to use this new user.

Fixes #446.
Merge branch '446-remove-guest-user'
A few fixes for pynipap

This sets search_options default to {} for the prefix search and
smart_search, just like it's for pool and VRF searches.

Catch IndexErrors in Pool get() as it would otherwise fail when trying
to get a non-existing pool.
Merge branch 'pynipap-fixes'
Fix xmlrpc call to find_free_prefix

VRF is sent as a separate positional argument to the backend function.
This can't have ever worked...
Add read-only user option

authlib.py:    Add readonly property to BaseAuth
               If user is trusted, use readonly value from impersonated user
               Add parameter readonly=False to SqliteAuth.adduser

local_auth.db: Add column readonly to the schema of table user
               Make default user guest a read-only user

auth.py:       Add readonly property to the session object

nipap-passwd:  Add option -r (--readonly) to set a read-only user
               Add read-only column to output of user list

backend.py:    Perform authorization for read-only users (add, edit, delete)

pynipap.py:    Translate auth errors from XML-RPC to exceptions

Part of #438.
Add test suite for read-only functions

This makes sure that a read-only user can execute read-only functions
and is not allowed to execute read-write functions.

It relies on pynipap, so certain backend functions, like those related
to ASNs, are not tested as pynipap doesn't yet offer mappings for those
functions.

Part of #438.
Merge branch '438-read-only-backend'
Throw error incorrection credentials

Have the XML-RPC layer throw an exception if authentication credentials
are not correct.

Fixes #456.
Merge branch '456-fix-authentication-error'
Update authentication documentation for RO support

Rewrote the authlib documentation to clarify bits and pieces of how we
do authentication and authorization.

Fixed a few things in the backend logic documentation as well.

Part of #438.
Merge branch '438-read-only-documentation'
Remove useless echo

That was easy ;)
Probably leftovers from debugging..

Fixes #455.
Increase minimum column width for VRF in CLI

VRF RT column width wasn't set so when listing multiple VRFs it would be
fairly common with some mis-alignment between prefixes in different
VRFs. Now the minimum width is set to 14 which means that it looks fine
for most VRF RTs. Long RTs, like with 4-byte ASn, will still result in
some alignment issues, but this should fix the majority of cases.

Fixes #454.