Allow empty TokenizedStorage and fix typed value access in TokenizedStorage
TokenizedStorage was implemented so that it must have contain at least one element for no good reason. It is possible to create a storage for nothing now.
During this modification, I found that TokenizedStorage::valueAt() returned values with a wrong type. That function is not used fortunately -- now it is fixed just in case.