Added compile_to method that with single .compile() can produce multiple target files.

This is my take on issues/568.
What do you think?
How do you feel about making these methods and writing:
    Outputs().assembly("foo.s").bitcode("foo.bc")
to set two members? These methods return a new struct and  it would be passed by value, but I think all that is fine as this is rarely used and a few string copies are not that expensive.