Fix error handling, also migrate to go1.3

I was mostly following the convention outlined here (http://blog.golang.org/error-handling-and-go) and used in the go standard library (see the example on SyntaxError).  Practically, I think it doesn't matter whether its done in the constructor or the the method since it's only ever called once in either case here.

In a case where the message is read multiple times (errors being passed up to higher handlers), building the message in the constructor is more performant (sprintf uses reflection and is slow).

Either way, I don't think it matters here.