addrelease.py: Refactor AddClusterAsRelease.

Abstract out some of the functionality all clumped together in
AddClusterAsRelease.callback() to methods of new parent class
AddObjectAsEntity.
addrelease.py: Abstract .callback() to parent class.

Child classes now just need to define object type, NAME, and the
set_form_values() method - and reigster_*_action.
addrelease.py: Abstract out submission URL.
addrelease.py: Add AddFileAsRecording class.

Allows for easily adding individual files as standalone recordings.
addrelease.py: Add AddFileAsRelease class.

Allows for easily adding single files (which can't be clustered) as releases.
addrelease.py: Update plugin metadata.

- Add Freso to PLUGIN_AUTHOR
- Update PLUGIN_NAME and _DESCRIPTION to describe added file
  functionality.
- Increment PLUGIN_VERSION to 0.5.
addrelease.py: Improve PEP8 compliance (E701).

Fixing instance of error E701: multiple statements on one line (colon).
addrelease.py: Revert change to PLUGIN_NAME.

Per nikki's comment on pull request #271:
https://github.com/musicbrainz/picard/pull/271#discussion_r11242854
addrelease.py: Define form_values in __init__().

See https://github.com/musicbrainz/picard/pull/271/files#r11352974
addrelease.py: Use approximated "~length" for Recordings.

Recordings don't support sub-second time precision, so the
track.metadata.length used for the two Add...AsRelease classes will
cause an error on /recording/create's "length" field.
track.metadata["~length"] contains the time converted to mm:ss format
and will not cause the error on /recording/create, so this commit
changes AddFileAsRecording to use that.
Merge branch 'plugin-addtracktomb' of https://github.com/Freso/picard