migrated away from boost::shared_polymorphic_downcast, which disappeared in boost 1.53.0

see my complaints at http://stackoverflow.com/questions/14743071/boostshared-polymorphic-downcast-is-gone-in-boost-1-53-0-what-should-i-use-in