Split up Banner interface and implementation to set an easy way for the user to provide an custom programmatically banner

Sometimes a user may want to provide an own programmatically banner, because just providing a banner.txt via classpath does not fullfill any requirements, for example when including ansi color codes or some dynamic data like a version number. The current propose by the api documentation is to override the SpringApplication class to do this, what I don't think is the cleanes way. Its better when the user is able to provide his custom Banner implementation which is used by SpringApplication if no static banner file is provided.
Should probably remain package private