task module system external iframeability - for embedding resume in canvas

This makes the assignments section iframeable by the LMS:

* it sets a security header to permit it only from the canvas domain
* it allows assignments to be linked by seo names in the database (e.g. /assignments/resume) instead of hard ID. This lets it work across different users so they can pick up where they left off and is just friendlier to look at in a link or iframe src.
* It uses some javascript to detect if it is in an iframe, then css to customize the page appearance for it. I hid the header and footer currently.
* It uses devise authenticate_user to more transparently use SSO instead of the old way of requiring student login. If the user is logged into canvas via SSO, they should not be asked to log in again nor see a message telling them to log in.

On the canvas side, we can add this html to an assignment: <iframe src="//beyondz.org/assignments/resume" width="100%" height="200"></iframe> or just link to it instead of iframing if we decide that is better.

It currently does NOT report completion back to canvas, I think it might be best if users just did that on their own. It still DOES have our comment system though, which we might want to hide in favor of canvas.
I think this file slipped in here from another PR.