You've got the start of a good platformer with excellent collision detection and response. The movement system could use some work. I found it very time-consuming to turn my player around.
If I were a bettin' man, I would say your movement system needs to automatically decelerate the player to zero as if being slowed by friction. That way, when you apply an opposite acceleration, you're starting from zero and not from an existing opposite velocity.
The reason it takes so long for the player to turn around is because you have to cancel out the existing velocity before getting a velocity in the direction you want to go. If you were starting from zero, you would just start moving in the direction you want to go.