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.
Use IPy for IP check

While socket.inet_aton does correctly identify addresses it can return
very unexpected results such as '123.123123' being interpreted as
'123.1.224.243'. This causes issues because IPy won't interpret
'123.123123' as an IPv4 address at all.

Switching to IPy for determining if something is an IPv4 or IPv6 address
fixes this. Downside/bug/feature being that '123.123123' won't be
interpreted as an IP address at all.

Fixes #453.
Merge branch '453-ip-check'
Update VRF info from parent prefix

When adding a prefix from another prefix the VRF info is now fetched
from the prefix we are allocating from.

Fixes #386.
Merge branch '386-fix-add-prefix-vrf'