Separate declarations and definitions

Also allows us to get rid of the "ForwardDecl" wart, I think.