move the flattening code out of the `Bundle` hierarchy

@laughedelic as we already discussed hundreds of times, having all the tower stuff as part of the `Bundle` type severely hinders the use of Bundles at the abstract level.

Given that scala/scala#3030 is merged in 2.11.0-M7 we should try to test and go back to the type class based approach, even at the price of bigger compile times.