Isolate main method to its own class

It is vital for ImageJ2 that IJ1 classes are not loaded before IJ2 starts
up. Isolating the entry point to a minimal class makes this possible.

We also use the net.imagej.ImageJ gateway instead of the old IJ1 way of
launching with ij.ImageJ.
Basic macro recorder protoype added
MACRO recorder protype

Macro recorder prototype are being added they will help facilitate the
recording of macro
minor changes for adding macro recordability

these are the changes which includes macro recording capablity for
recording macro for function and algorithm changes. Though it does not
work now. But should work with some minor changes.