Refactor SqlString.escape's argument passing

With all the arguments that `SqlString.escape` must handle, it makes more sense to use an options argument (discussed in issue #700). Some other minor changes were made throughout `SqlString` with an aim to improve readability and consistency.

The code probably isn't ready to merge just yet. I just wanted to go ahead and open a pull request so that I could make Travis run the unit tests for me.