This question will come up in all APIs I think - (it's the same with `Tree` and many more I believe), it comes down to the question discussed elsewhere "one type with nulls vs. many specific types". I think @willnorris foted for the one-type approach + good docs... I'd personally like the "many types" one, but we'd best agree on some 
naming scheme for those then hm... 

Just sayin' because I'll PullReq a few things soon (Trees pretty much ready for example), and I'm wondering which style to use.