Added logic to properly treat underscores, dashes and spaces. Fixes #318

This PR addresses behavior observed in issues #318. 

Primarily, handling of underscores and dashes which do not connect words. They either have a space before or after them, or both, as was the case for this bug. 

Additionally, the regex in FromPascalCase was not handling spaces in a string properly. Amended the regex to handle the spaces. It can be improved, given my lack of mastery of .Net regular expression. 

Finally, a few test cases were added to test different combinations of spaces, dashes and underscores.
In consideration of performance, can you do the `Trim()` once.

I know you didn't introduced it, but can you also remove `ToCharArray()`, it should work without it anyway.