Refactored Archive controller.

Those chained .orElse{} statements have been annoying me for a while, hopefully this is easier to read/ understand.

 Also changed most of the tests to actually invoke the controller and test the output instead of hitting the implementation methods.
Add a request timeout to DynamoDB
Merge pull request #5781 from guardian/archive-refactor

Refactored Archive controller.