I think all of the examples that Alt listed are the clear indicators that Snape is not a 'good' guy, but I don't think he's psycopathic.
While I think she was heavy handed in this, Rowling did something significant in the naming of Harry's youngest son: Albus Severus, the two "most heroic wizards" he (and therefore, the reader) knew. Rowling is pointing out that being 'good' is not what makes people heroes, and people can be heroes for completely diametric or contradictory reasons. Sometimes heroes are not great people- but they are always people who do the right thing when it is required of them. Keeping in mind the audience for whom she wrote books six and seven is drastically different than the readers who read books one and two- if for no other reason than her readers were no longer 11, then we can acknowledge the development of the two "bad" guys (dumbledore and snape) was perhaps something she pulled together later in the books, and also that it wasn't appropriate to nuance the characters as conflicted in the earlier works. Simpler concepts for younger readers, more advanced concepts for adults.