extract storage type responsibility out of Attachment

fixes CNVS-12045

test plan:
  - with local file storage
    * upload attachment to course and submit file
    * download attachment
  - with s3 file storage
    * upload attachment to course and submit file
    * download attachment

Change-Id: I9e3fd20a6659e53a37dae04137e2b39b0e3c3ea8
Reviewed-on: https://gerrit.instructure.com/32433
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>