I didn't read your code, but the usual problem is that you are going so fast that you are above the object you are colliding with one frame, (So no collision) and below it the next, (So still no collision). The normal way to fix this is to collide using a polygon that includes all positions the object has been in in between the frames. Also, what units are you measuring gravity in? Pixels? A pixel does not necessary equal a meter, so its better to just set it to any value that looks realistic enough and works. (Unless you need it to be more accurate for some reason, are using a physics engine, or have a different good reason)
The stuttering could be caused if you are still trying to load data while the game loop is already running. It could have something to do with your event system to, I don't know about that one.