In D38358, we ended up believing that reading the first byte of the void pointer is not the intended behavior of ProgramState::getSVal(Loc) when the type of the loaded value is not specified/hinted by the user and gets auto-detected as void. Therefore, instead of replacing the auto-detected void type with char and returning the first byte, fail with an easy-to-understand assertion to warn the user that it's better to specify the type explicitly in his case (even if he'd have to specify ACtx.CharTy anyway).
Additionally, allow specifying the type in the ProgramState::getSVal(const MemRegion *) override, because with the new assertion, a new use-case immediately shows up that requires such change. And, generally, it's a good idea to be able to specify the type here.