storage-level support for userdb
Initial revision of wallaroo_password.

This is a generic password-hash interface, a SHA-based implementation
of that interface, and some utility functions for hashing, salting, and
checking passwords.
Initial revision of wallaroo_user
Initial revision of Wallaroo authentication server.
wallaroo auth API and stubs
wallaroo_auth complete
Fix info leak in error cases.
Add wallaroo_auth:user_exists/1
Add basic auth support to wwc
Fix several auth bugs
added basic authentication to wallaroo_node_resource
Add basic auth to all other resources
Add basic auth for branch resource.

Needs refinement.
Add robust basic auth for tags
py2.6: Add basic auth support.
removed spurious debug statements
rb: add basic auth support
py2.4: Add basic auth
Now creates current as well as empty tag
Adds support for HTTP Basic authentication.

Includes authenticated access to all resources, generic REST
authentication support in wallaroo_web_common, a user database
with flexible password hashing, and an internal API for
authentication (wallaroo_auth).  Authentication is supported in
every client library, and secret-based authentication is supported
over REST.

Known limitations and future tasks:

* The REST interface (and, by extension, the client libraries) do
  not yet support creating, deleting, or inspecting users.
* The client libraries do not support secret-based authentication yet.
* It would be nice to track tag owner information and restrict tag
  modifications to tag owners or admins (likewise with branches).
* Currently, anyone with WRITE permissions can write metadata.  This
  is suboptimal; other possible solutions (e.g. a WRITE_META permission
  or host-based authentication for the configd) could be implemented
  in the future.
* It should be possible to authenticate clients via peer certificates.
* The default deployment should be SSL in production.

Squashed commit of the following:

9c777ffa50376faa7ec5128dd1a7d8be5ab38d76
69bd37ab9da10b74fc8b5313cdf3cdda28947f61
45ace0708deccbf718984b2ed229774580245fd7
cf8d07e7660d831ca18bb7ab379d30c19bb1e526
0ab7488333cf7fb0df97d4026c8de244816d7eb5
f5295291d7a56f3e325a5363c468307bd60a410f
bd28cfed386e0f18966c63dbd8f57b7b1d01d17c
dd44f215ba68234a1fb268f4ccb0b9e1c5754413
d6d15fb08a46e675f8e3d11c345ddc093f221a74
73d24c73f157cb1f8865151b00d6703cf5bf0f90
074cc5ebaf5a61790d819249525ec5457f058e19
01f320d76a9237975b76bf9336bbc1a9ad6e9e21
32fb8f3eca52b4d4af1ad348b3da2515af61b750
c2ece8d3f7f5e1c1771fa41cac466b7e30cc11b4
e8448219ae6dc46a406212361c9a0d8835c30afa
3b61e5929cca065a266c13b5cc4dd34c85359c9d
9d909b36a998fb17b8860dce8c10e69fa0854be0
a27e90525b8112966f768af71a011f9f87afd941
2a88fbbc86785e485eaf142d13471b749d321d6f