Elasticsearch: Cast __in lookup values to list

This makes sure lazily-evaluated lists (like querysets) are evaluated so they can be converted to JSON
Reduced title boost to 2. Fixes #553
Added multiple backend support into update_index command. Fixes #552
Improvements to type() PageQuerySet method

This commit makes the type PageQuerySet method include all concrete
models that descend from the specified model in the filter.

This makes this method useful for cases where you have many page types
descending from a single abstract model and want to search across all
these page types (which you can't do in Django normally).
Refactored create and edit views to use revision.publish()

This cuts out lots of duplicated code
Added unpublish method to Page
Make sure pages are unpublished before delete

Fixes #570

Conflicts:
	wagtail/wagtailcore/models.py
Moved approve/reject moderation logic into PageRevision
Added locked boolean to Page
Don't allow any admin actions to be performed on a locked page
Added views for locking and unlocking pages
Fixed Python 3.2 incompatible migration
Fixed some issues found while writing tests
Added tests for page locking views
Don't save when unpublishing page before deleting it
Merge remote-tracking branch 'torchbox/master' into searchchanges/updateindex-multi-backend
Added opton to update_index to allow user to select which backend to update
Merge branch 'master' into pull_576
styling of edit lock
styling for users without lock perms