Refactor Play application support

PlayAppPre22 and PlayAppPost22 encapsulate the Play-version specific
details of a Play application including the difference in structure
between a dist and a staged application.

BasePlayApp defines the interface to these classes and provides common
base methods.

PlayAppFactory isolates the using code from the concrete subclasses of
BasePlayApp.

Play version parsing and the naming requirements for the
Play JAR are both tightened up.

[#58432326]