Add return values for update operation

This change makes the return value of setting tags more useful.  In
particular, when using regular expressions.  Previously, a successful "set"
operation returned an empty list.  With this patch, the result will be a list
of time series for each series which matched the where clause and for which
permissions (via a key) were available.  The list includes the stream's uuid,
and whichever tags were changed.

For instance, the query:

    set Metadata/Extra/Foo = "\1\1\2" where Metadata/Extra/Foo ~ "^(.)(.*)$"

Might return something like:

    [
      {
        "Metadata": {
            "Extra": {
            "Foo": "bbbar"
          }
        },
        "uuid": "1c52e2c2-e6ca-5be9-9ab2-c35a70ff8f47"
      }
    ]

This should make it significantly easier to tell what effect an update query had.
Fix multiple sets.

I think this was left over when I ported to having an AST.
Move SmapExceptions to the util module.

There are problem with circular imports in certain cases for importing
core.  However, since core imports the exceptions by name this should
not cause any porting problems.  I did edit all the references to
core.SmapException that I could find to reflect the new real location.