introduce a new build mechanism

This patch replaces the collection of individual "build" scripts with a
single script (tools/build-docker-image), made available as "build"
inside each image directory.

The build-docker-image script will, by default, build images tagged with
the current commit id in order to prevent developers from accidentally
stepping on each other or on release images.

Documentation in docs/image-building.md describes the script in more
detail.

Change-Id: I444d5c2256a85223f8750a0904cb4b07f18ab67f
use "crux" for creating users/endpoints

this patch introduces the "crux" [1] tool for creating keystone
users, services, and endpoints in an idempotent fashion.  E.g., to
create a user that doesn't exist:

    $ crux user-create -n lars -t lars -p secret
    creating new tenant
    created tenant lars (d74cec5023c4428da533066bb11943db)
    creating new user lars
    created user lars (adf2c2d92e894a3d90a403c5885f192e)

And performing the same operation a second time:

    $ crux user-create -n lars -t lars -p secret
    using existing tenant lars (d74cec5023c4428da533066bb11943db)
    using existing user lars (adf2c2d92e894a3d90a403c5885f192e)

The behavior is similar for creating keystone endpoints.

[1]: https://github.com/larsks/crux

Change-Id: I694e0c1bdcdde595e1af2ee8ef5d0f239a9ad4cd