Initial implementation of high-level interface

This includes #25 but will be rebased.

We should have a 'high-level' function that can take many different kinds of input and understand them, and this is a first stab at it.
Add the usual `__future__` import (usually doesn't matter, but sometimes changes things e.g. for division)