Revamp project ref/release.

Everything else uses closeables, so use 'em here too!
Use new createBuffer world order.

This allows us to nix HasProjectMode and pass our Project to "dependent" modes
via buffer state.
Use new new buffer creation approach.

This allows us to pass the project along and set the 'project' tag when we
create incidental modes like project info, or compiler/test output. That way
the project minor modes are enabled in those buffers as well and all the
standard project key bindings work there. Much nicer!