Should a person be allowed to contest downvotes on question or answers?
No, because to whom would you contest them? All votes are completely anonymous. No one else can see who voted what way on one of your posts, and no one else can change those votes (including moderators).
So even there was an escalation system (like posting on Meta), and everyone agreed that your post was erroneously downvoted (whatever that would mean, and putting aside how unlikely this would be), there would be nothing we could do about it but commiserate with you. I mean, maybe we could link you to a few lolcats or something to make you feel better. But that's about it.
Everyone is eager to click on the downvote button rather than leaving comments to improve QnA or justify their downvotes. I guess some people have taken this as a habit.
This is by design. Stack Overflow is not a forum. You have no obligation to get into an extended discussion with people over the validity or appropriateness of their posts. Instead, we rate content using a voting system. Useful content gets upvoted, and not useful content gets downvoted. The net score then determines how the community overall rates that content.
So downvoting is not only an appropriate course of action when you see a low-quality post, but the appropriate course of action. You can leave a comment to accompany a downvote if you choose, but this is not required. Lots of people skip it because it just leads to an extended discussion, arguments, and general butt-hurt. Besides, the tooltip on the downvote arrow already says most of what a comment would say.
I am not sure how it works, but lately any question that I ask, everyone talks about providing a working example and are ready to close vote or downvote the question, though I try to provide the context and a code snippet. I don't think this should be a criteria for downvoting.
Of course it should be. We have guidelines what constitutes a good question—see e.g. here, here, and here in the Help Center. If your question does not follow those guidelines, it is not considered to be a good on-topic question for this site, and it is therefore vulnerable to downvotes by community members. This is their prerogative, and a perfectly appropriate way for them to voice their opinion.
It is not their job to leave you a comment telling you how to fix your question. Yes, it is a nice thing to do. But it is not required.
If you want to minimize your chances of getting downvotes, you need to spend some time improving your questions to bring them up to our quality standards.
I am just getting so frustrated people bringing down other people's reputation on SO for small issues which can be requested as clarification in comments section.
Good questions do not require clarification questions.
The ability to ask clarification questions in the comments section is an escape hatch. If you forgot something or someone has a question that goes beyond what you normally would have included in a question, then they can ask in the comments. The appropriate response is for you to edit the requested information into the original question, not post a comment of your own in response.
But if people have to use the escape hatch in order to answer your question, don't expect them to be pleased. They shouldn't have to do this. You should have provided all necessary information in the question in the first place.
Aside from that, I think you have the relationship between downvotes and reputation backwards. People do not downvote in order to affect your reputation, they downvote to rate content negatively. Rather, your reputation score is a reflection of the amount of positive content you've contributed to the site. People should not have to wring their hands about your reputation when deciding whether or not a post should be downvoted—they should look only at the post itself and evaluate it on its own merits.
For e.g. if I am asking a question about a 3rd party control in used in Delphi, it is not possible for me to provide a working example for me as I am a .Net guy and I do not have a license for the TPA.
If you cannot post a working example, then you are not going to be able to successfully use the control. What were you expecting? People on Stack Overflow to write your application for you for free? Hmm, I don't think so.
I might even get a downvote for asking this question. I am hesitant to ask questions now on SO.
Yes, likely. Because downvotes work differently on Meta. And whining about downvotes is a very good way to earn downvotes here.