Add test and changes for serializing forms with multiple select to a string to work again.

Signed-off-by: Jorgen Rydenius <jorgen@pingpong.net>
Fixed bug #1384 for the hash accumulator + test case.
Replacing '%20' with '+' in for the keys too in the form to string serializer.
Prevent IE leaks

Without fix:

 - when `ELEMENT_CACHE` is not empty (e.g. `SPAN` was created with `new Element('span'))`, IE will leak memory for `DIV` and `ELEMENT_CACHE` after page unload.
 - when `ELEMENT_CACHE` is empty, `DIV` is cleaned correctly without any additional actions.

Problem detected and fix tested in sIEve-0.0.8.
DIV cannot be cleared until page unload
Fix for #1339, regression that setOpacity IE regression in 1.7.1 when setting opacity on an element before it was added to DOM. Also fixed some related tests.
Merge pull request #70 from rydenius/1339-hasLayout_IE-fix

Fix IE regression in `Element#setOpacity`. [#1339 state:resolved]
Merge pull request #69 from victor-homyakov/patch-22

Clear element creation cache in IE on page unload.
Merge pull request #66 from rydenius/1384-form-serialize-fix

Fix regression in `Form.serialize` when handling `<select multiple>` elements. [#1384 state:resolved]
Fixed PDoc for toQueryString()
`toQueryPair()`: `value` is already defined
Merged nested if() into single expression
Issue #1431: writeAttribute('checked') fails to write the 'checked' attribute, writes an 'undefined' attribute instead
Merge pull request #80 from sdumitriu/issue-1431

Fix an issue where `writeAttribute` tries to set an attribute named `undefined` in certain cases. [#1431 state:resolved]
Merge pull request #78 from victor-homyakov/patch-27

Merged nested if() into single expression
Merge pull request #77 from victor-homyakov/patch-26

`toQueryPair()`: `value` is already defined
Merge pull request #74 from victor-homyakov/patch-24

Fix PDoc for `toQueryString`.
viewportOffset: extend forElement (it's used twice)

`forElement` was used twice in `viewportOffset`:
1. at line 1147 as `var element = $(forElement);`
2. at line 1156 as `element = forElement;`
This leads to error when `forElement` is string: `Element.viewportOffset('id')`
Merge pull request #87 from victor-homyakov/patch-31

Prevent error in `Element.viewportOffset` when string is passed as first argument.
Possibility to remove X-* headers for CORS request

`setRequestHeaders()` unconditionally adds specific headers to any request.

This patch gives possibility to remove these headers in order to allow simple CORS request.

Based on http://stackoverflow.com/questions/13814739/prototype-ajax-request-being-sent-as-options-rather-than-get-results-in-501-err and https://prototype.lighthouseapp.com/projects/8886/tickets/1590-ability-to-remove-headers-in-ajaxrequestsetrequestheaders-for-cors