The reason that the wheel keeps spinning is that it is a kinematic body. Kinematic bodies behave like infinite mass bodies and are not affected by collisions.
Dynamic body - is a body that is affected by Gravity. that is why we can apply forces or impulse to it. it can collide with any other body and it requires a lot of calculating process by box2d depends on the shape of it. the fastest bodies to work with as dynamic bodies would be circles. a complex polygon shape will require much more calculating time so it is always a good idea to use a simple shape (if it is possible). it is mostly used for moving objects like player, boxes and anything else in the game that should move around.
Static body - is a body that cannot move. you cannot apply forces to it or set any velocity to it. it doesn't require a big calculating process and it doesn't collide with other static bodies or kinematic bodies. mostly used for walls, ground, or anything that should not move in a game.
Kinematic body - is something between dynamic and static body. it is not affected by gravity but you can set a velocity to it. angular (rotating) or linear velocity. a good example of using a kinematic body in a game is like lift, elevator, moving grounds, gears,... objects that should only move around but not be affected by gravity or forces on it.
Note that you can transform anybody with Body.SetTransform(..,..) but this is not the way to use box2d. you will lose the physic filling. so make sure to move bodies only by adding forces/impulses to it or setting his velocity parameter.