Hxt ports

@pjrt These are all of the main interfaces from HXT. This should provide a good jumping point for our API design.

There are a few obvious changes that need to be made (`Attribute` is not a subclass of `Node` so all Attribute related arrows need to change) and some stuff we'll probably get rid of (do we really need a `Tree` interface?) but HXT's interface should be pretty close to what we want.