* [core] Convert HashService into an effect Hasher
* [core] LocalFileStreamSuite fix prep of test env
* [core] LocalFileStreamSuite Refactor
* [core] Add Hasher.hashObjectChunk
* [core] make MD5HashGenerator private
Moved MD5HashGenerator into package hasher and made it private to that
package, together with the Hasher effect which is the only permitted
user of it. Added hex and digest methods to Hasher.
Similar for the ETageGenerator in [storage-aws], moved into a hasher
package and made private. It can only be accessed using the S3Hasher
effect.
* [domain] Add Monoid
* [domain] Sources use Monoid
* [core] ActionGenerator Refactor
* [core] Use >>= and *> operators
* [config] Refactoring
* [storage-aws] Refactoring
* [domain] Refactoring
* [core] Refactoring
* [config] refactoring
* Refactoring
* [core] PlanBuilder Refactoring
* [core] Make PlanBuilder into an object
* [storate-aws] Copier Reduce the number of parameters
* [config] merge config package object with Config object
* [config] Only extract batchMode value where used
Don't pull it out early then pass a boolean around
* [config] new module
* [config] stub module
* [domain] Rename domain.Config as domain.LegacyConfig
* [config] Move LegacyConfig to config module
* [config] Move config parsing and validation into module
* [config] Complete migration to module for Config
* [config] Config You should not name methods after their defining object
* [config] Rename LegacyConfig as Configuration
Also remove redundant uses
* [core] LocalFileStream Refactoring
* [changelog] update