Adding method writeTo to UploadedFile interface

This change allow users to simple copy uploaded files to their application, if needs. Applications that don't save files in the filesystem can use `getFile` method, that now throws an `IOException` to compliance with spec when we work with filesystem.

A new class was added, `CommonsUploadUploadedFile`. This class only delegates all operations to commons-fileupload API, allowing us to use methods like `write` that test if files can be moved, and if not, copy the file. This feature have a very good performance because moving files consumes less resources than copy to a new file, specially when copy too large files. I know this name is too uggly, but I can't think in another name. Ideas?

The `DefaultUploadedFile` class still exists to keep legacy code for users who overrides this class. I don't deprecated this class because can be reused in the future.

Targeted to 4.2 because changes public API, and adds new features.

Closes #881 and #882.
I don't like adding checked exceptions to the public api, what do we gain with it? Is there any way to recover when an IOException happens? The answer is usually *no*. So this exception will force people to try...catch or add a throws, and will eventually bubble up untill a 500 error.

Checked exceptions are a bad idea, they only make code worse. If you take any JVM based language (scala, groovy, clojure, etc), it will not have checked exceptions...

:-1:  for IOException.