catalog: finish making MyriaCatalog abstract

Need to also set the __metaclass__ attribute.
catalog: rename MyriaCatalog to Catalog

There's nothing Myria-specific about this abstract definition of a
catalog.
FakeDatabase: implement Catalog

Assuming 1 server, 10000 tuples per relation.
interpreter: make Catalog mandatory option

and verify that it has the right type
NaryJoin: set the schema correctly

It's not a list, it's a scheme.Scheme(list).
myrial_test: add multiway_join option to get_physical_plan
optimizer_tests: improve and refactor the hypercube test

- test left-deep and hypercube in separate tests, not mushed together
- use shortcut functions in myrial_test where they exist
myrialang: cleanup typo and spacing
myrialang: ensure that some HC dimension always picked

It seems like the minimum workload being sum(child_sizes) might be too
low -- I got an error that the opt_dim_sizes had never been set. Here I
hacked the code to ensure that the first option is always chosen.

@stechu is this the right workaround? If not, what should it be --
maybe a 1-D join as the alternative, for instance?