DV2 DetectionBase knows more about allocation statuses

This PR was spawned from comments in #345.  It contains a chunk of refactoring, followed by a few feature adds:

- give a specific error message when an allocation is archived
- notice purged or invalid allocation links and continue seamlessly
- add a bit more instrumentation
Smart match operator is experimental and still changing in newer Perls. See [here](http://stackoverflow.com/questions/16927024/perl-5-20-and-the-fate-of-smart-matching-and-given-when).

I would prefer to see a method on Allocation along the lines of `data_is_available` or something like that instead of just listing out the statuses here. If we ever make additional changes to Allocation statuses that shouldn't necessitate changes in DV2 as well.