I don't do any of that specifically, but know a couple people (very small businesses 🙂) using vtiger (SugarCRM fork) for a CRM, including keeping track of that kind of info, and love it. I've used it some for actual support tickets, and it works well. IE, bring up a ticket that you have access to, and you can easily (well, after getting used to the UI a little 🙂) get info on the customer, what they're running, their whole ticket history, etc.. It's supposed to also have all the features you seem to be looking for, but I've only used it for keeping track of support tickets.