Improve error messages around type signatures.
Simplify signatures for constant definitions.

This allows omitting the function type arrow for the common
case of a pure definition that takes no inputs and returns
one result.

Closes #72