Add initialize and finalize options to be performed on every file upload

Adding `initialize` and `finalize` Flow options that are to be set
when the Flow object is constructed. These functions are to be
applied to every file before the upload is started (`initialize`) and
after the upload has completed (`finalize`). This can be helpful
when uploading to third party services that require the user to hash
signatures using secret keys that need to be fetched from server
to not expose them on client side. I decided not to affect progress
calculations with these new extra step as the guess would be too wide.
It is up to the user to alter these progress function in the
initialize and finalise step definitions.