Fix overuse of FormData in XmlHttpRequest

Currently, the following code sends a request in `multipart/form-data`,
although the contents is a trivial key-value pair list.

    XmlHttpRequest.perform ~post_args:["key", `String "value"] url

This change fixes the behavior so that such requests would be sent in
`application/x-www-form-urlencoded`.

If there is at least a file content in `post_args`, then
`multipart/form-data` will be used as usual.
Merge pull request #214 from m2ym/fix-overuse-of-form-data

Fix overuse of FormData in XmlHttpRequest
Fixed compilation with 'make -j'
Runtime: use a single object shape for all OCaml strings

This should be better optimized by JavaScript engines.
Runtime: fix caml_hash so that it can be optimized by Google Chrome

The JavaScript engine does not like integer multiplication by a 32-bit
unsigned integer, so explicitly convert the constants to 32-bit signed
integers.
Makefiles: reduce compilation time (when using make -j)
Compiler: keep multiple occurrences of string "number"

JavaScript engines recognize 'typeof x==="number"' and generate
efficient code for this expression. We use this pattern when compiling
pattern matching. Replacing the string by a variable can have a
significant performance impact.
The space overhead of this change is negligeable (< 0.2%)
2.4.1
Merge remote-tracking branch 'up/master'
Makefile: fix toplevel
Compiler: perform some array bound-checking optimizations
Runtime: MlString.safeGet should return unit
Makefiles: put binaries at the same place as ocamlc by default
Merge branch 'master' of https://github.com/ocsigen/js_of_ocaml
Runtime: add back old (deprecated) string constructors for now, for compatibility
Compiler: sourcemap improvements
Compiler: more sourcemap improvements
Lib: replace print_error by string_of_error
Lib: add Js.Unsafe.pure_js_expr
Runtime: export StringReader and ArrayReader so we can reuse them in eliom