Create a panel similar to Brackets linter panel

@MiguelCastillo Will comment on a few places in code later, but wanted to get this out there for you to review.

Fixes #68.
So some linters provide information differently.  For example, the raw output from JSLint will automatically include the error code in the reason. So you are going to run into issues with inconsistency in the formatting.  That's why its best to let the linters' groomers to normalize the reason, which where all the massaging for messages should happen.  With this change, I expect the error code to show up twice.