Error numbers

Summary: This diff associates a unique integer with each error.
The error message now includes that error number and the error kind.
There are 4 kinds of errors: Parsing, Naming, NastCheck or Typing.

One can guess the error kind from the error code:
1000 < Parsing errors
2000 < Naming errors
3000 < NastCheck errors
4000 < Typing errors

Reviewed By: @elgenie

Differential Revision: D1514275