refactored abstract handling into its own module and use cast check early on returns (fixed issue #1557)

git-svn-id: http://haxe.googlecode.com/svn/trunk@6331 f16182fa-f095-11de-8f43-4547254af6c6