syncbase: Implementation and tests for Glob and Scan.

This CL includes a few smaller changes on the side:
- Implements row-level Get/Put/Delete, needed so we can
  test the behavior of Scan. Includes tests for those
  methods.
- Enables TestTableCreate and TestTableDelete (since Table
  Create/Delete is a prereq for Scan). This required
  extending the utilities in testutil/layer.go a bit, and
  implementing Table.{Get,Set}Permissions for the "empty
  prefix" case.
- Adds FullName() methods to all levels of hierarchy.
  I ended up not needing these, but they seem worth keeping
  nonetheless.
- Adds various util functions (along with tests for them)
  and fixes a few small TODOs.

Change-Id: I55a4b0da9fb8f5551958d09c5ac8afd88dff2ebb
diff --git a/services/syncbase/store/memstore/stream.go b/services/syncbase/store/memstore/stream.go
index f1614eb..1e96c01 100644
--- a/services/syncbase/store/memstore/stream.go
+++ b/services/syncbase/store/memstore/stream.go
@@ -26,7 +26,7 @@
 func newStream(sn *snapshot, start, end []byte) *stream {
 	keys := []string{}
 	for k := range sn.data {
-		if k >= string(start) && k < string(end) {
+		if k >= string(start) && (len(end) == 0 || k < string(end)) {
 			keys = append(keys, k)
 		}
 	}