net/poller.py: pull Pollable from pollable.py

So we don't have anymore two very similar but distinct copies
of the Pollable object!
neubot/__init__.py: update copyright years and wording

Specify more correctly that there is a dual copyright:

- the individual contributor (me in this case) owns the code; and

- the Nexa Center owns the code as well.

While there also make sure we write Nexa rather than NEXA.

I already did this in the past for individual files, but it is
handy to perform this change to this file, because I create
new files by copying this file. Therefore I don't have to edit
at hand the copyright statement each time.
http/message.py: improve the diff that disables prettyprinting
footer.html: NEXA -> Nexa

Correct the name of the Center, and make sure we mention the
computer and control engineering dept. (the DAUIN).
runner_policy: specify rotate() argument to increase correctness

It is more correct to specify rotate() first and unique argument.

At least, the documentation does not mention that you can omit the
first and unique argument, even though it works.
scripts: add helper scripts to start local server and client
www: allow the user to see the last N minutes of data
results.js: implement append, to-fixed, and to-string operations

This commit implements the append, to-fixed, and to-string operations,
which are required by the new mod_dash test that I will commit soon.
utils_path.py: Rewrite append()

- add check to ensure that the file is below the root directory;

- allow the prefix to be unicode;

- add code to unquote the path if needed;

- the path still must be ascii;

- make sure we correctly deal with symlinks;

- make sure we always use the proper function, i.e., one of
  append() and join(), in the tree;

- flatten the code to add informative messages;

- update the regression tests suite.
add utils_modules.py: code to manage modules as plugins

This commit adds utils_modules.py, which contains the code to
manage modules as plugins.

I will commit soon the new mod_dash test, which is an external
module that is hooked into Neubot by using utils_modules.py.
Reorganize the backend and start using pickle rather then sqlite3

This commit significantly reorganizes the backend of Neubot
along the following lines:

1. the filesys code has now been merged into the backend;

2. now the filesys code also supports NT in addition to POSIX;

3. the neubot backend now allows to store and load data for
   a generic test;

4. the new generic load/store support uses pickle instead of
   sqlite3, which is the first step towards the decommissioning
   of the sqlite3-based, hard-to-manage database;

5. there is also a new volatile backend, which is designed for
   when you don't want to write data on the filesystem, and
   which mimics the generic load/store support functionality;

6. recycle filesys_posix.py regression as backend.py regression,
   which uses the new backend.py -F command line switch.
Add the new dash test

The new test is not inside the Neubot directory, because this one
is the first test that is implemented as a plugin.

The new test is implemented as a plugin thanks to the new
functionality that I added to utils_modules.py.

Very few bits of Neubot will have the 'dash' name hardcoded.

This diff is joint work with Antonio Servetti (thanks!).
Teach Neubot to dynamically load the mod_dash and other plugins

This diff teaches Neubot to dynamically load the new mod_dash
test and plugin, and possibly other plugins.

There are still a few places in which the 'dash' name is hardcoded,
but we will deal with them in subsequent patch releases.
main/module.py: remove import of nonexistent module
Allow mod_dash/main.py to override the default volatile backend

To do that, I made datadir_init() a backend-dependent operation,
therefore only some backends really init the datadir.

While there I also killed a couple of unused imports in main.py.
www: Show test progress in the right sidebar
Avoid surprises and use POST to negotiate

As Roy Fielding notes [1]:

  Yes. In other words, any HTTP request message is allowed to contain
  a message body, and thus must parse messages with that in mind.
  Server semantics for GET, however, are restricted such that a body,
  if any, has no semantic meaning to the request. The requirements
  on parsing are separate from the requirements on method semantics.

  So, yes, you can send a body with GET, and no, it is never useful
  to do so.

Therefore, to avoid surprises, always use POST to negotiate, because
our negotiate always requires a body. The semantic of negotiate,
in fact, is "I want to negotiate this test with you and I want to
use the following, possibly empty, parameters".

With surprises I mean that, for example, it was not clear to Antonio
why there was a body with GET and, reportedly, jQuery and AJAX refuse
to send a body with GET as request method.

Prompted by a comment from Antonio Servetti - thanks!

Notes:

1) I verified that the negotiation still works with the currently
   stable server and the code of this diff;

2) I verified that the compatibility layer for the old speedtest
   API correctly translates GET to POST.

Links:

[1] http://groups.yahoo.com/neo/groups/rest-discuss/conversations/topics/9962
mod_dash: negotiate rates and/or auto-adapt the rate

Rationale:

- once the test is out, we may want to tweak the rates without
  having to make a new Neubot release;

- in such case, we can do that by changing the code that runs
  on the M-Lab servers only;

- it may also be interesting to auto-adapt the rate, so add this
  possibility as an option;

- in particular, we auto-adapt if the server returns an empty
  rate vector in the negotiation phase.

I tested the auto-adapt at home for a long time, and the impact
on my quality of experience was reasonable.

<Update>After some testing, it turned out that auto-adaptation
is better, from a QoE of other user activities standpoint, than
the fixed rate vector; therefore, I made the auto-adaptation
the default and the fixed rate is now a possible option.</Update>
Allow mod_dash to adjust the stream timeout

It makes sense to do so, because the DASH test is expected to
run for longer time that the other tests.

Probably I should also adjust the timeout of other negotiators,
but I'm not going to do that inside this branch.
Merge branch 'dashtest-v8'

As usual at the beginning there are patches to adapt the tree
to receive the new piece of code.

Then there is the new piece of code (which in this case is
the new dash test).

Finally there is the code that deals with the fallback of adding
the new piece of code, non-trivial patches that were not merged
into the new-piece-of-code diff, etc.