Create providers and tests

Created abstract `ContentProvider` and implemented it in `FileContentProvider`.  Wrote tests for reading and writing basic content and content from an empty file.

I wasn't able to use `onContentChange` for external file changes, as I wasn't able to find an event for it.  Added a TODO for future work, though.

Fixes #3431

@devoncarew 
The only reason I put this in workspace_test is that _createWorkspace was private to it.  I have moved to editors_test and made _createWorkspace public.  LMK your input.