Use ITextDocumentFactoryService to get ITextDocument instances

This changes the code which maps from ITextBuffer -> ITextDocument to
use ITextDocumentFactoryService instead of directly querying the
property bag.  Querying the property bag works but it's not truly
supported by the Visual Studio team and could be changed at any time.
The ITextDocumentFactoryService interface is the supported method for
getting ITextDocument values.