Be very selective about code running under universal try..catch
Aggregate core and lib in IScala project
newTermName -> TermName and add 2.10 compatibility
Use double defence for output capture

Apparently Console.with{Out,Err} works only for println(), etc.,
i.e. dynamic scope. If you access System.out directly, which is
what default sbt logger does, then output won't be captured. So,
now we use Console.with{Out,Err} and alter System.{out,err} in
a try..finally block. Both are needed, because the later solution
alone doesn't work with dynamic scope.
Sbt.resolve() requires a fresh instance of ConsoleLogger

This is because ConsoleLogger once initialized, will always log
to the same System.out, disregarding what Capture does. Every
time we use resolve(), we have to create new logger, to make
sure that resolution output goes the right place (e.g. notebook).