Provides functionality for formatting a test string against a mask string. MaskedTextProvider is stateful, it keeps information about the input characters so multiple call to Add/Remove will work in the same buffer. Most of the operations are performed on a virtual string containing the input characters as opposed to the test string itself, since mask literals cannot be modified (i.e: replacing on a literal position will actually replace on the nearest edit position forward).