More predicates

Two changes

1.  Integers are valid dimensions (is there a reason to avoid this @mwiebe ?)
2.  Add `isunit` predicate to tell if something is a type like int32, float32, string (can anyone think of a better name?