SHDP-287 Better app install/submit model

- Refactored built-in apps in spring-yarn-core handling
  app lifecycles.
- New DefaultApplicationYarnClient which does a better job
  installing and running apps by guarding against errors
  by having a knowledge where app is installed and from
  where app is started.
- New spring.yarn.applicationId which together with
  applicationBaseDir can overwrite applicationDir. This
  concept allows to install apps on a different hdfs
  directories so that actual app dir can be resolved at runtime.
- YarnClientFactoryBean can know instantiate a yarn client based
  on a given client class. Related changes in YarnClientConfigurer
  and YarnClientBuilder.