Make csvlint way faster

The speed gain is directly correlated to the size of the CSV. I tested on a 1.7MB CSV. These commits dropped its validation time from 9s to 1s. I used stackprof to identify bottlenecks. Main bottleneck now is Ruby's CSV library, though date format detection is still slow. I recommend reviewing one commit at a time. In brief:

* Using exceptions to control flow is incredibly slow (biggest speed gain here)
* Metaprogramming is slow
* A rescue that swallows all exceptions is an anti-pattern, because it can hide bugs, in this case "TypeError: no implicit conversion of Proc into String"

With the new, fast version, the code spends time roughly as follows:

* 17% garbage collection
* 82% `loop` in `parse_csv`
  * 49% `csv.shift` (previously 13%)
  * 24% `build_formats` (previously 61%)
  * 8% `build_errors`
  * 5% `col_counts` (because Rails' String#blank? is slow)

So, csvlint now spends a lot more time parsing CSVs (a cost we can't reduce) and less time rescuing exceptions (a cost I cut here).