Remove FatalError from ConstraintNew, add PromiseCheckType

This improves error output but defers checking of common constraints
attached to promises to eval-time, rather than FatalError'ing out of the
parser. Although the impact should be low, this checking needs to be
brought back at post-parse time (PromiseCheckPartial) soon.
Replace FatalError in ReadDir with ProgrammingError