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.