fixed buggy createM3FromDirectory

createM3FromDirectory was not working properly.

This code ...
-----------
result = composeJavaM3(project, { createM3FromFile(f, javaVersion = javaVersion) | loc f <- find(sp, "java") });
-----------
used to be in the for-sourcePaths loop reassigning the result variable each time. Instead of creating a union of all the M3's it would just end up returning the last M3 created using createM3FromFile.

This fix simply collects all M3's discovered on all sourcePaths into a set. With this set (m3s) a JavaM3 is composed.