Improve the design of the API

It should now be easier and more natural to specify skip and lineBreak
strings/patterns.
Double speed by replacing array iterators with for loops
Add support to not respect line breaks in input text

Also fixed a few bugs related to regular expressions, for example,
failing to reset lastIndex when reusing global regexes.
Improve API design

When an array of 2 strings is given in `lineBreak`, the first one
is converted to form `lineBreakPat`, and the second one is used as
`lineBreakStr`.
Add more benchmarks to benchmark.js
Add jshint to tests
Solve possible conflicts between `skipPat` and `lineBreakPat`

When there is an overlap between the strings the two patterns match,
in other words, a string S matches both patterns, should this string
be skipped or used as a line break? This possibility wasn't taken
into consideration in the old code, causing inconsistencies and
unnatural behavior.

The current solution is to give precedence to `lineBreakPat`: the
input text is first splitted using this pattern into lines, and then
`skipPat` is matched in each line.
Add preset support