Add wrappers needed to use JFileChooser through RMI.

The classes are just wrappers to the corresponding library
classes, they just provide a "Remote" interface and
separate implementation needed to use them with the java
RMI system.

Classes implemented following the post at
https://community.oracle.com/thread/1178301
Restructure the inheritance of classes used to communicate.

An action requested from the client to the server is represented
by the Action interface.
An action can be a (set of) shell commands, in which case it is modelled
by the ShellAction interface, or a request directed to the server
itself, in which case it is modelled by the ServerAction class.
Both ServerAction and ShellAction implement Action.

The response to an action is represented by an AbstractResponse
object.
The response to a ServerAction will be an instance of ObjectResponse,
while the response relative to a ShellAction will be of type
ShellResponse.
Both ObjectResponse and ShellResponse extend AbstractResponse.
Adapt code to use the new classes for messaging.
Move all the communication-related classes inside the communication
package.
Merge pull request #1 from OmbraDiFenice/feature-clien_server_communication

Feature client server communication
Merge remote-tracking branch 'origin/master' into feature-browse_remote_files
Use a JFileChooser to browse the remote files and play them.

The implementation makes use of the classes in the
client.filebrowser package (including the new
RemoteFileSystemViewClient) to initialise a JFileChooser like it
were browsing files on the local machine, but it is in fact 
receiving files informations from the remote server.

The Server now handle the ServerAction too, and a new key in
Language class set the file chooser dialog title.
Show only supported files in the file chooser.

Two new keys are added to the server configuration, which
specify which file extensions are supported from the player
(two lists, one for the video formats and one for audio).

These informations are sent back to the client within the
ListFilesResponse object, and used on the client to initialise
the file filter of the client side file chooser.

The file chooser used is the new BrowseMediaFileChooser class,
used for now just to set up some default properties of the
file chooser, like the dialog title, the multiselection and such.
Bugfix: JFileChooser over RMI now correctly lists files and directories

The previous implementation missed a proper way to delegate method
calls to remote File object through the RemoteFile interface.

The new RemoteFileClient class fills the gap acting as a bridge
between local File objects and RemoteFile objects, effectively 
delegating any method call to the remote instance.