Test improvements

Based on feedback from people who are extending the buildpack, the
repetitiveness of the buildpack testing was problematic.  The goals of
this change were to drastically reduce the amount of test code written
and make the code that was written more understandable.  These goals
were accomplished with a variety of strategies, but the two biggest
were the use of example metadata and shared contexts.  The example
metadata allows us to declaratively describe things like which
application fixture to use for the test, while the shared contexts
allow us to encapsulate and reuse common test behaviors.

[#59911894]
Merge 59911894-test-helpers to master

[Completes #59911894]