Make case class serialization more robust

This contains fixes and tests to address two issues with case class serialization in jacks.

First, case classes in the root package cannot be serialized. This is because their scalap ClassSymbol names are prefixed with "<empty>.", which prevents them from being seen as the correct class in the jacks Scala module.

Second, jacks fails to correctly serialize case classes with a user-defined companion object, if that companion object is defined before the case class in the .scala file that contains them (companion objects have to be in the same file as the class to which they are a companion). This is because jacks simply finds the first scalap ClassSymbol from the file whose name matches the class name from the JavaType being serialized without checking whether that ClassSymbol is for the companion object.