changed observation attributes to be lists rather than unary values

since we're dealing with graph data, there might be multiple values for
each attribute (note that we're actually using sets, so duplicates are
dropped)

of course this makes things a little more complex (as evidenced by the
required test modifications), but that's just something we'll have to
deal with
added preliminary support for custom dimensions