Preview scrolling is now synchronized with the textarea

Fix #8 but I don't believe this is a final solution as the offset is
currently done at the top level and it will probably break when dealing
with the sub tabs (partials, images, etc). Also the CSS is a bit
repetitive on the form so it needs cleanup.

Nonetheless, the scrolling is now synchronized in a way that when you
edit, what you type will always stay on screen. Some issue I had when
opening a html tag and having the preview jump around is now resolved
with this implementation.
Modularized CSS and stabilizing UI

admin/sidebar.css should now hold everything that modifies the sidebar
abstractly. What I mean by that is that it should give a universal look
and feel in the admin panel. If a specific controller need to override
some specific look, it can do so within its own css file without
sidebar.css becoming a spaghetti. Also used a bit of mixin to make it
easier to understand the flow and break of indentation nightmares.

The new button is now part of a small slogan using the <main> part of
the screen in posts since I have yet to use that space and wanted to
give some balance to the screen.
Removed the wrapping div when a form has errors
Better error presenting using CSS Flex box

It used to be an absolute positioned element that had quite a bit of dom
elements. Using flex made it possible to include the element on top of
the form easily. Also, the flow readjust itself when the dialog is
closed which gives it a nice place to live.
Modified validation and callbacks handle more scenario

The slug is now generate prior validation which has two advantages.
It relies on validation to avoid any error at the database level with
regards to unique keys (title and slug).

It also make it possible to actually validate the slug when creating a
new post. Because the slug was generated after the validation, there was
no way to avoid duplicating a slug without doing another validation
outside the flow of validations.

Long story short, first code was very unstable and prone to exception.
This one is much better. Also added test coverage to make sure the
validation will always work.
Fixed the window glitch when the left menu grows.

CSS's height is a fixed value that can't grow. Because I'm using css
flow box, I expect the height value to grow as there's more item or the
screen shrink.

By changing height to min-height, I keep the base styling while keeping
responsiveness to the layout as the posts count grows or the screen
shrinks.
Added a CSS overwrite to the admin panel

I guess I could DRY this up so the admin panel AND the blog could share
the same CSS overrides. For now, it's fine enough. I opened a ticked #10
to keep this issue at hand.
Welp, I didn't check the panel close enough. FIXING!

The <main> element still had it's height set to 100% which is probably
coming from the older days when I wasn't using flow.

I don't need to set height anymore as the direction of the flow is
'column' which means that
the height(row) is taking the full available space.
Image uploading is now A-W-E-S-O-M-E

Huge ass update that covers a bit too much but hey, it's alpha so I
guess I can deal with overlapping commits.

Uploads now works in the following way:

- Add S3's keys to config.local.yml
- In the admin panel, you open the subtab 'images'
- You can drag and drop an image and it will upload it directly to S3**
- Once your file is uploaded a thumbnails appear, you can drag and drop
  it to the location you want in your text area and the engine will
  paste the actual HTML tag preconfigured and ready to go.
- Done!

Seriously, I think I will upload images just for the hell of it because
it's so awesome.

**: Well not *directly*, you upload it to the server and the server
upload it to S3. I know I could upload directly to S3 which would save
bandwith but since uploading is not done heavily in blogs it was
unecessary. Moreover, the form upload would have required a callback
from S3 to handle the response which would have added complexity with
the validations/error handlings)
Welp, those height are creeping up

Another CSS height that was screwing the layout because in a FLOW
layout the height is UNECESSARY.
Merge branch 'master' into marmite

Conflicts:
	app/assets/stylesheets/admin/editor.css.scss