Initialize stringClass field lazily

This ensures that when we need to use stringClass, it can be constructed
directly from the cha field. Previously, it was only initialized after
the call to super(…) in the constructor. However, by then it is too late
because super(…) calls initialize() and solve() which need the
stringClass field.
Test case exemplifying Unexpected type: class com.ibm.wala.analysis.typeInference.JavaPrimitiveType

This is a simple test case that illustrates the issue with type inference
on a String + some primitive.

The code is

package javaonepointfive;

public class TypeInferencePrimAndStringOp {
  public static void main(String[] args) {
    int a = 2;
    String result = "a" + a;
  }
}