Add hardcopyarea plugin and write course-info.json
notebook: cleanup codes
Merge branch 'master' into course-editor
add hardcopyarea support
storage: support storage selection by disk uuid for APPs to save their user data in selected storage
Merge branch 'master' into course-editor
notebook: add screenshot area plugin support
Squeeze images
storage: select storage in query string by uuid instead of sid
notebook: in some system, there has problems reading disk uuid, in this case, core-server will generate a fake one for that session. But notebook app will save the fake uuid in the notes, we have to replace the old fake uuid with new fake one before loading the note content.