Make locals its own argument

@kevgo This is a proposed breaking change that would change
`= section 'foo', locals: { some: 'locals' }, partial: false`
to
`= section 'foo', { some: 'locals' }, partial: false`

and even nicer
`= section 'foo', locals: { some: 'locals', more: 'locals }`
to
`= section 'foo', some: 'locals', more: 'locals'`

After using this on multiple projects I've found that 99% of the time you are passing options to a section it is only the `locals` hash. Very rarely do I end up overriding the defaults for js/css name or turning off a partial.

I think this change makes sense because it adds 3 additional characters `{},` for the rare case where you are setting options and not locals, and immensely DRYs up the much more common case of passing locals without options.
And it throws an exception if the :name key doesn't exist. We want that behavior. Sounds like there are no specs for that scenario, can you add them please?