Change CSV row representation, improve error handling & support for dynamic lookup

* Change csv row representation and improve error handling
  * The representation was previously just a string[] and on each cell access the conversion was being made (possibly repeatedly)
  * Now it's a tuple, and each row is converted as a block (but still each row on deman)
  * This improves the display on F# interactive and the debugger, and allows the csv rows to better display on tools that use reflection and support tuples, like generic data grids hooked into fsi
  * It also allows the IgnoreErrors flag to ignore rows with different data types on the columns, and not just different numbers of columns
  * With this change we achieve feature parity with the csv provider of TryFSharp.org
* Support for dynamic lookup in CSV files
  * Promoted CsvFile and CsvRow to top level documented component under FSharp.Data.Csv
  * Dynamic lookup with GetColumn(columnName:string) (#64)
  * Optional FSharp.Data.Csv.Extensions API with (?), AsString(), AsInt(), etc... similar to JsonValue