Start on new error message format for Typed Racket

This PR starts to convert TR error messages to the new Racket format detailed here: http://www.cs.utah.edu/plt/snapshots/current/doc/reference/exns.html#%28part._err-msg-conventions%29

The new errors are raised with the `tc-error/fields` and `tc-error/expr/fields` functions, which are used like `raise-arguments-error`. I've only converted the uses of `tc-error` in the `check-below.rkt` file so far. If this looks good, I'll work on converting other uses.

Part of the motivation for this change is to make it easier to pretty print types (something I plan to work on separately) by putting types on separate lines.

Here is some sample output from these changes:

````
; readline-input:2:16: Type Checker: type mismatch
;   expected: String
;   given: (List a ... a)
;   in: x
; [,bt for context]

internal-vector-error.rkt:12:12: Type Checker: type mismatch
 mismatch in number of values
  expected: 2
  given: 1
  in: (vector 1 2)

; readline-input:2:16: Type Checker: type mismatch
;  mismatch in number of values
;   expected: 0 values and `a ...'
;   given: 1 values
;   in: x
; [,bt for context]

; readline-input:4:16: Type Checker: type mismatch
;  type variables bound in different scopes
;   expected: a
;   given: a
;   in: x
; [,bt for context]
````

These changes pass the tests, but I haven't thoroughly checked all the error message cases to make sure the messages look good. I'll do that later.