some refactoring in self type conversion
relax attribute checking for literals
works around https://groups.google.com/forum/#!topic/scala-internals/gppfuY7-tdA