Editor Abstraction Layer

**This change is needed to support Image Viewer.**


Editor Abstraction Layer:
- Supporting multiple types of editors.
- Introducing `EditorSessionManager` to manage/persist/restore editing sessions.
- Introducing `EditorRegistry` to enable file type registration.
- Improving `EditorProvider` to issue only `EditorSession`s. Created a common editor provider that can be easily inherited from.
- Improving `EditorArea` to work closely with `EditorSessionManager`.

Changes:
- Move editor related files to `lib/editors/`.
- A simple loading placeholder for `EditorArea` (addressed to be beautified or removed).
- Editors will now be created by `EditorSession`.

Miscellaneous:
- Fix 1px white border under Tab label.

Wait for [PR238](https://github.com/dart-lang/spark/pull/238) before merge.