You might be better off implementing this yourself if you are looking for simple physics with no advanced features and existing tools are too hard to integrate in your game. Though for that you'll need at least some working knowledge about Newtonian mechanics (just translation, since you said you don't need rotation). Can you describe why someone standing on a frictionless slope will slowly slide down due to gravity?
For your first problem, if you want to prevent the player from sliding off a slope, you need to add friction. As I said, you would slide down a slope in real life if it were frictionless (think an icy slope). The most basic implementation is simply as follows (this is called static friction, there are other types of friction):
1. calculate the force the player exerts to move, call if F
2. calculate the force exerted by the player on the surface on which he is standing (gravity), call it N
3. if F > N * c, move the player, else, don't move the player, where c is some constant between 0 and 1 (called the friction coefficient)
This way, if a player simply stands on a slope, he won't move. And if he wants to move, he will be able to.
For your second problem, this isn't really a problem per se. If you walked straight off a slope in real life, you would fall and tumble as well. But what we do in real life is we follow the slope, that is, we incline ourselves so that we don't walk off the slope horizontally, but instead move diagonally along the slope. To do this, you can look at what the player is currently standing on, calculate the gradient at that position, and make the player move according to that gradient. This will make him "slide" down the slope nicely instead of moving in a staircase pattern.
The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.
- Pessimal Algorithms and Simplexity Analysis