[#1] The chart div's ID is unique, based on the view's ID

This way we can have multiple views in the same page, without their div id's
clashing with one anoher.

Fixes #1.
Refactor the chart creation JS into a CKAN module
Refactor the filters form creation into a CKAN JS module

It's still far from ideal, but much better.
Fix bug when adding a single filter

The problem was that when you submit a single filter, the received
"filter_fields" and "filter_values" is a string, and we were treating them as
arrays in the JS.

This patch converts them to arrays on Python, so JS doesn't need to.

I tried doing the conversion using schemas, but was unable to. It would be
cleaner that way, IMO, and it'll be saved already converted in the DB.
DRY the filter form's classnames