Should a "force" be represented as a class which is in fact a step listener, and which computes the force magnitude and direction each step, from various parameters ? Is that alright for you ?
Well, if that's necessary...
My naive imagination of a solution was to just use some kind of setGravity() method and use an instance of "Gravity" (with an optional constructor parameter of 9.81f) to the SimulationEngine. All Collideables, that have a Body attached would then be influenced by that gravity force.
More general forces could be for a later time (as you say).
I don't know, if it makes sense to limit the gravity influence to a subset of the bodies in the SimulationEngine. I guess, it wouldn't, since if you want to have regions with differing gravity, you would simply use another instance of SimulationEngine or set the Gravity instance to something different.
Marvin