Make jar accept alternative main class

By having `jar` accept an alternative main class, `uberjar` can call `jar` with its alternative main class and not get the main ignored when project maps are recalculated. As `jar` performs the preparation (compilation aot), this also fixes #899.

Ignore branch name, it was renamed locally but apparently not on the remote.