It's normal behavior. Ignore as much of it as you can, but don't change your rules or go back on what you said, he's probably testing limits.
As far as not listening, make sure he is really paying attention. Get close to him, even touch him, and have him look at you - eye to eye contact. Tell him "let me see your eyes" Then you can tell him what you need him to hear.
Many times, when our kids hit this age we expect them to be able to focus on what we are saying without making sure that they are aware we are talking (how many times have I been so involved in what I'm doing that I don't even realize someone is talking to me?...Wow).
Also focus on the times he does what you want. Whatever you give attention to will grow. If you make a big deal over the sass or him not listening or following directions, its going to keep on going. If you pretend that you don't notice the sass/demanding attitude it's likely to gradually decrease. Recognize when he is polite or talks to you appropriately. By taking proactive steps to help him listen, you are also focusing on the positive behavior.
Also look at what he is watching on t.v. Lots of kids shows depict kids who are disrespectful and rude to grown-ups as being cool and smart (and the grownups as dumb). Kids start acting this way because they don't realize it's not normal behavior. Best thing is to sit and watch his shows with him and talk about how that isn't like real life, and to cut back on how much he watches in general (if this applies - maybe he isn't seeing any of this)