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 understand you dislike (makes sense), but this not means that is a bad idea. This is the big discussion that people have with Java language. James Gosling have a good article about this, but I'm not able to search right now. In my think checked exception are a good idea when you talk with another systems like database over JDBC, network operations like Http call, and write a file (this case). 

And yes, you can recover if I/O error occurs simple redirecting user to another page, or somethink like this.

All I/O operations works with checked exceptions. Take a look in the code inside commons-fileupload. All operations with streams throws `IOException`. So why not throws this exceptions? We can simple try-catch to rethrows wrapped into a `RuntimeException`, but whats the gain with this? Only to wrap a checked into unchecked?

I'm not creating a new exception. I'm only rethrowing the same exception that commons-fileupload already throws when I/O exception occurs.