Refactor Play application support and support Play 2.2

PlayAppPre22 and PlayAppPost22 encapsulate the Play-version specific
details of a Play application. PlayAppPre22Dist and PlayAppPre22Staged
represent the differences between Play 2.0/2.1 dist and a staged
applications, respectively.

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]