Fix issue 4598

Fix issues #4598.

It's really two issues: on windows the main module must be importable and the minion instance must be picklable.

The installed version has no issues with importing the main module but running python salt-minion will fail as it lacks a .py extension. I've created a dummy .py script for this that execs the real script and added a check in the real script so that it refuses to run unless it's frozen.
I've always included the dummy script on windows for now - it probably should be omitted for certain build/install/develop targets.

Making minion/schedule/matcher instances picklable is relatively straightforward - anything in the __dict__ that isn't picklable is removed and recreated on the other side if necessary. This also removes the need for the windows multiprocessing hacks in thread_return.
While it might be possible to make the minion functions/returners picklable this would not work for cython modules so I think the only option is to reload for every process.

Tests added for both issues too which should catch obvious problems on travis ci.

NB until issue #5395 is fixed this will be very prone to timeouts