Optimized ottoArrayToStrings in ChannelMapper
_changes feed notices changes to channel access

* Wildcard channel list ["*"] works properly now.
* Changes feed checks channel access before every document check.
* If a new channel appears, it'll be returned starting from seq 0.
Now tracking seq#s at which users get added to channels.

NOTE: The user and role JSON in the admin REST API now represent channel
access lists as mappings from channel name to sequence number, not as
arrays of channel names. So you'll see something like:
  admin_channels: {"chan1":17, "chan2":1}
instead of
  admin_channels: ["chan1", "chan2"]
If you add channels to admin_channels after the database has been active,
use the database's current sequence number as the value to associate
with newly-added channel names.
(This will be cleaned up later!)
Changed user/role document IDs to start with "_sync:"

Prevents name collisions with app data documents.
This obviously breaks all existing databases (or at least makes all
their users/roles disappear), but so did the previous commit :)
Tweaks to the new user/role channel format

* When PUTting a user/role and adding new channels to admin_channels,
  setting the associated sequence to 0 will cause it to be set to the
  db's next sequence number.
* TimedSet can be unmarshaled from a JSON array of strings; all the
  sequences will be set to 0. Useful with the above feature.
* Updated the README.
Don't reject a PUT to a user where body has no admin_channels property
Speed up parameter passing to JS sync function

Use new walrus API that lets us pass Go values as input to a JS function
without having to marshal them to JSON first. This avoids marshaling
the new document's body and the userCtx in the call to the sync fn.

This requires the latest version of walrus, so run
go get -u github.com/couchbaselabs/walrus
Allow _changes and _all_docs to be called on admin port

Useful for troubleshooting and playing around since this gives a way
to use these with all-channels access.

Also fixed a couple of bugs that popped up when running these handlers
in a no-user admin mode.

Also moved the sample server config files into a new 'examples' dir.
link to wiki from readme
add image
User.CanSeeChannelSince should return the lowest valid sequence number

Also added doc-comments to the Principal and User interfaces.
Better changes-feed logging
Bumped VersionString to 0.42 (alpha 1 candidate 2)
Bumped VersionString to 0.51 (post-a1)
Restructured repository with dependent packages as Git submodules

This fixes the package versioning problem: "go get" always fetches the
latest revision, so we can't get repeatable builds of sync_gateway or
defend against it breaking from someone else's checkin into another
repository.

Instead of using "go get", we now use git to fetch specific revisions
of the packages we need, as submodules. This populates "vendor/src", and
we can tell Go to use "vendor" as a GOPATH entry so it finds the
packages.

We also treat the repository root directory itself as a GOPATH directory
and move the gateway sources into it. That way one can check out this
repository anywhere, and set GOPATH to ".:./vendor" and build.

NOTE: To build, run "build.sh". A regular "go install" or "go build"
won't work because the GOPATH needs to be set up first.

Fixes #68.
test for otto regression
Add the packages from code.google.com as direct checkins

The previous commit doesn't work because it doesn't contain git
submodules for the packages from code.google.com … because those aren't
Git repos at all, rather Mercurial. So we can't add them as submodules.
Instead, I'm checking their files in directly.
modify the test script for new module locations
update to latest otto
Plain bourne shell scripts should start with #!/bin/sh

I'm on a system that doesn't have /bin/bash (and these scripts don't
need bash)