Python 3 support, and many improvements

I don't know if you are interested in this pull request, but here it is f.or you to have a look

I have incorporated changes made by @benosman and made a few changes to make it compatible with Python 3 (hopefully whilst also keeping compatibility with Python 2.

I have also removed the bundling of Select2 itself and instead use a CDN to serve the files (if desired) and similarly with jQuery.  If Select2 is bundled on the server, a local URL can still be provided by changing the settings files.

In order to make this plugin easier to integrate, I have also add template tags which include the relevant CSS and JS files.