adds an etag to queued space objects upon save

fixes SPOT-762
refs SPOT-751
parsed out the upload view into a utils function

fixes SPOT-764
refs SPOT-751
makes the approve and publish buttons perform correctly corrects json

fixes SPOT-759
fixes SPOT-760
fixes SPOT-761
refs SPOT-751
Merge branch 'master' into spot751

Conflicts:
	templates/upload.html
forgot to update a variable from one that i had deleted

refs SPOT-760

i deleted 'failurecount' and replaced it with 'failure_descs'
but forgot to remove it out of edit_space.py
errors are caught when PUTting and displayed with the data

fixes SPOT-769
refs SPOT-751
flags now update dynamically with the queued spaces statuses

fixes SPOT-752
refs SPOT-751
refs SPOT-757
makes extended_info and location human readable in single space edit form

fixes SPOT-753
refs SPOT-751
adds functioning etag to both queued spots and when trying to publish

fixes SPOT-767
refs SPOT-751

had to use a session variable when there is a failed If-Match from the
etags. the failed_json data is set to a session variable and loaded in
the diff template, but it gets immediately deleted to not rack up
unnecessary session variables. wish i could find a way to do it wihtout
a session variable :(
added drop down menus for things that have to be a certain value

refs SPOT-751

at laurens recommendation, things in extended_info and location
will now be part of a drop down menu if the values have to be one
of the listed ones in the schema
cleaned up the diff.html and got rid of using a session variable for failed_json

refs SPOT-767
refs SPOT-751

not using a session variable anymore for the json diff. now the json dict is
being passed through the url, which is really ugly and should only be
temporary, until we find a better way to do it.
makes the space_last_modified field display nicely in the single space edit form

fixes SPOT-755
refs SPOT-751
Merge branch 'spot751'
single space edit form now pulls all extended info fields from schema

refs SPOT-751

before it was only pulling the fields that already existed in that spot,
not necessarily all of the possible fields
made values that should only be 'true' or nothing be checkboxes

refs SPOT-751
turns the diff template into a more generic error template

refs SPOT-751
Merge branch 'spot751'
made the drop down for extended info with multiple possibilities have a blank value

refs SPOT-751

this way it still uses a drop down menu instead of checkboxes, but now
the values are optional and dont have to be part of the spot. the can
be returned empty
Merge branch 'spot751'
adds permissions that users must have in order to update, approve, and publish

fixes SPOT-773
refs SPOT-772