Drop support for python 2.4
Simplify exception handling on unusable m2ee api.

Let exception and error objects describe themselves... e.g.:
TRACE: Got <class 'socket.timeout'>: timed out
TRACE: Got <class 'socket.error'>: [Errno 111] Connection refused
ERROR: Got <class 'httplib.InvalidURL'>: nonnumeric port: 'henk'

Hide socket.error and socket.timeout, it means communication with the
m2ee api is broken. Print other exceptions with stacktrace, but
continue.

A Timeout can occur when the JVM is broken after e.g. a heap space
error. Normally, connection refused is the sign that the application is
just not running.

This fixes a 'bug' introduced in
82623bb46ba45664727930551c21c22e521148b7 where the trace logging was
added. This code assumes errno is filled with a number, but this is only
in case it is a socket.error. Well, socket.timeout also seems to be a
socket.error, but it does not have errno and strerror set. In this case
the string formatting that was added crashed on %d. This was already
quick-fixed in 138e04579626f6ba281350748f1aa52bce609cd3
Catch/hide AttributeError again...

Older httplib2 versions throw AttributeError: 'NoneType' object has no attribute
'makefile' when it should throw an socket.error about connection refused
when nothing is listening on the admin port. Squeeze has 0.6.0 which has
this 'bug. Wheezy has 0.7.4 which correctly reports connection refused.

Previous commit was tested on wheezy, so here's the fix for older
httplib2 again. :-)
More logging about merge_runtime_configuration

Aaaand, fix some more constants handling for 2.5. Always do
merge_runtime_configuration, not only on 3+

Add a lot of debug/trace logging about what's happening to microflow
constants, to be able to debug more effective.

Also, do a little de-side-effectication of merge_runtime_configuration
Copy config before poppin' MicroflowConstants

D'OH
Release 0.4.3
update TODO
Eliminate simplejson dependency for python >= 2.6

So, on python 2.5, import simplejson as json instead ;]
Abort startup when starting appcontainer fails.

This check was simply missing, resulting in unfamous errors like
AttributeError: 'NoneType' object has no attribute 'endswith'
when the requested runtime version is not available.
Print JVM command line as text, not as list

...so it's easier to just cut and paste it onto the command line for a
manual test when starting the JVM horribly fails.
Remove mimetypes from example config

bmp: image/bmp has been in the appcontainer mimetypes map for ages, so
there's no need to specify it again.
Remove syslog logger from example config
Catch OSError when the java binary can't be found

...instead of just getting an ugly stacktrace and "OSError: [Errno 2] No
such file or directory". By default, the environment is not preserved,
so hint the user that setting preserve_environment or custom_environment
is necessary when java is not at /usr/bin/java.
Prettify error message when no config was loaded

Instead of yelling "CRITICAL: Option app_base in configuration section
m2ee is not defined!" at the user, hint about the fact the m2ee.yaml is
missing in it's default location, or one has to be specified using -c
Always upper() DTAPMode before checking
Don't load config.json when in A/P mode
Force admin_pass to a string

prevent TypeError when base64-ing it before sending to m2ee api:
TypeError: b2a_base64() argument 1 must be string or read-only buffer,
not int
Using admin_pass 1 or password is not allowed.
Display extra critical logging on missing httplib2
Start writing full-documented-m2ee.yaml

and refer to it from user-specific-m2ee.yaml