[#1251] Refactor ReclinePreview to not use global JS variables

Everything our module needs should be passed to it using data-* attributes.
This allow us to add multiple modules on the same page, and they won't mess up
with each other.
[#1251] Minor refactoring on preview_recline.js

As in JS the variable definitions are hoisted to the beginning of the function,
we were defining "state" twice, which makes JSHint complain.
[#1251] Change #recline-controls to class, so we can have multiple on one page
[#1251] Move recline controls' widget to inside the module

A module should be self-contained, so we're able to have many in the same page.