Currently, in the default build (mvn install), this will be build with default dependencies and the same resulting jar be used with all Tomcat versions (problem #1).
If profile TC7 is defined (mvn install -PTC7) the tomcat 7 Jars are used (but with jboss servlet api jar - problem #2).
However, for Tomcat 8 this no longer compiles, so this needs to be revised a bit. I suggest as we go farther, we keep moving out non-common (i.e. no compilable on all versions) code to respective implementations and only keep the common code that compiles for all versions (problem #3).