Full EditorConfig parser with filesystem traversing, error reporting, and tests

- Defined class EditorConfig to parse and validate EditorConfig content.
- Added tests to check for correct values and extra options

No actual glob logic attached at present.

@devoncarew @gaurave 

Fixes #3435
There only needs to be one .editorconfig at the root of the project.  Also, I haven't yet, but I am going to add a catch .editorconfig content string if no .editorconfig exists (this is what will be the default read-only preferences "file").

The file path will be matched against all of the files each time we ask for options for a file, but that is required since one file may match a certain section, while another file may match a different section (as well as the original section).  It gets complicated.  The EditorConfig instance is intended to be ephemeral because there was a tradeoff of cost to match options for a file vs. complexity of having to manage state of the EditorConfig sections.  How do we know when to reparse the config files when they have been edited?  This is a solvable problem, but considering how infrequently the options will be queried (presumably when the user opens or switches to a file), I thought it was better to just re-parse and match on demand.