Split text output headers on underscore

Issue #10

When both the `FirstLineIsHeaders` and `SplitHeaderText` options are set,
header text is split on underscore if a property contains at least one.

E.g. the property name "Foo_bar_baz" becomes "Foo bar baz".
Split header text on camel case in TextDestination

Issue #10

When the text destination option flags `FirstLineIsHeaders` and
`SplitHeaderText` are set to true and a property name does not contain an
underscore the name will be split on camel case parts using these
heuristics:

1. Non uppcase letter followed by an uppercase letter; FooBar -> Foo Bar
2. Uppercase letter followed by uppercase then any letter; FooDB -> Foo DB
3. Any letter followed by a non-letter, e.g. digits; Foo42 -> Foo 42
Make field separator character configurable

Issue #10

The `FieldSeparator` option specifies which character(s) is/are used to
separate fields in a line of data. E.g. '\t' for TSV and ',' for CSV
output.
Use specified line separator character

Issue #10

Each line in the text output ends with the specified line separator
character.