ws: style cleanup
ws: move create domain into it's own function
ws: implement PUT for zones (update or create)
ws: cleanup how we look up domains

previously we would hit the DB twice, for no real reason.
ws: clean up how we return errors as JSON
remove **db param from UeberBackend::createDomain

Noticed that UeberBackend is a DNSBackend, but the signatures for
createDomain did not match. Removing the returned DNSBackend from
UeberBackend::createDomain is okay, because we need to call
getDomainInfo anyway, so we can insert a SOA record.
bind2: rename createDomain to createDomainEntry

Bind2Backend::createDomain was hiding DNSBackend::createDomain, but with
completely different functionality. (Bind2Backend::createDomain was there
first.)
move #include ws.hh to .cc file

Makes for faster incremental builds.
ws: rework exception/error handling

HTTP-level errors now cause HttpExceptions, and generate corresponding
HTTP status replies. Those replies can be served as HTML, JSON or plain
text, depending on what the client wanted.

Also, this gets rid of the old "class Exception", and duplicate catch
statements, because SessionException is a PDNSException already.