2.9.x compatibility & refinement of symbol check

Had to modify the code a bit to make it compatible
with Scala 2.9.x. Instead of using dependent types
in a method signature I had to wrap the types in a
trait. Instead of using `Tree.forAll` I had to use
`Tree.exists` and modify the body of the predicate
accordingly.

I refined the symbol check so it doesn't match
against `Ident(nme.scala_)` but instead simply ignores
symbols that point to `definitions.ScalaPackage` This
is because `Ident(nme.scala_)` would ignore more nodes
than intended, i.e. `{ val scala = "awesome"; scala }`
would be ignored as well.