Added parameters substitution, improved "toString" choice

If the first parameter sent to one of the log functions is a string
that contains "{}", the occurrences of "{}" now get automatically
replaced with the serialization of the remaining parameters.

Internally, the new Message class handles that functionality. An
instance of Message is attached within each LogEvent so that layouts
may simply call its "getFormattedMessage" function to serialize the
parameters of the log event as a proper string message.

The choice of whether or not to call "toString" to serialize an object
is now a matter of whether the "toString" method has been overloaded.
If the object's "toString" method is "Object.prototype.toString", the
object goes through the simple object serializer not to end up with
a pretty useless "[object Object]" string. Converserly, if the object
defines its own "toString" method, that method gets called.

In particular, the "toString" method is called for native objects
such as errors. Support for the "serializeErrorsAsObjects"
PatternLayout option introduced in previous version has been removed
accordingly.

The PatternLayout now also supports non abbreviated conversion
patterns such as "%logger", "%level", "%highlight" or "%message"
(it used to support only "%c", "%p", "%h", "%m").
Switched to require.js "shortcut" (a.k.a "sugar") notation

Modules used to be defined as "regular" require.js modules, with
dependencies listed upfront, as in:

 define(['blah', 'foo'], function (Blah, Foo) {});

They are now defined using require.js "shortcut" notation:

 define(function (require) {
   var Blah = require('blah');
   var Foo = require('foo');
 });

... which has the merit to be much more readable and to ease detection
of unused dependencies and possible mismatches.

Internally, require.js uses Function.prototype.toString() to parse
the code beforehand and extract dependencies, in order to be able
to load these dependencies asynchronously. This should work in all
sensible environment (PS3 and old Opera mobile versions excepted
according to require.js). Woodman is likely to be use as a compiled
library in any case, and require.js optimizer takes care of converting
that notation into the appropriate one when it optimizes things away.