Reversed abbreviation algorithm to allow prioritized abbreviation and longer matches first.
Added abbreviation exception to allow better error message when an exception occurs during abbreviation.
Simplified regex for non-matched word splitting
fix abbreviation separated first letter issue
add failed test for abbreviation followed by nonmatch
fix nonmatch word following abbreviation
Merge with master