Change return type of ZipfDistribution.rand_val to int

The rand_val method of the ZipfDistribution class used to return
numpy int64 values, which created some issues. This commit changes the
rand_val implementation so that the returned value is now int.
Change settings to match config used for hash-routing ICN'13 paper

This commit changes the settings in config.py to match those used
to generate the results of the hash-routing paper presented at
ACM SIGCOMM ICN'13.
Verify that user is running Python 2.6+

This commit adds some code that returns an error message if a user
tries to run Icarus with a Python version earlier than 2.6
Move assign_caches to BaseStrategy

This commit moves the assign_caches function (which maps content
identifiers to cache nodes for hash-routing) from the algorithm
module (which was used only for that function) to the BaseStrategy
class. This commit also removes the algorithm module.
Fix typo in analysis module
Fork code for reproducing ICN'13 results from Icarus simulator

This commit creates a new subfolder that will contain all the code
for reproducing the results of the ICN'13 hash-routing paper.

It would be more logical to create a branch instead of a subfolder.
However, I decided to do so to because it would be easier for users
to just download the master branch and have everything there.
Change version name in ICN'13 results code
Remove plots not used for the ICN'13 paper

This commit cleans up the plot.py file by removing code not used
for plotting the graphs in ICN'13 paper
Fix issue of unsorted x points in plots

This commit fixes the issue of points in the plot being incorrectly
connected due to the points of the x array being not sorted.

This commit checks that x points are sorted before plotting
Remove unused test scenario

This commit removes a test scenario that was not used for generating
the ICN'13 results
Remove engine module and move its code to run module

This commit consolidates the modules by removing the superfluous
engine module and moving its code into the run module.
Clean settings by removing unused ones and renaming others for clarity
Copy scenarios folder into ICN'13 results subfolder
Add README file to ICN'13 results subfolder
Improve and rename reproduce results script

This commits renames and edits the shell script that reproduces
the ICN'13 hash-routing results. This new version automatically creates
the logs and graphs folders if they do not exist yet.
Remove logs and graphs folder

This commit removes the empty folders logs and graphs. The final
objective is to make Icarus create folders when it needs them rather
than expecting empty folders to be available.
Large-scale refactoring of code for next release

This maxicommit refactors large part of the code of release 0.1.1
with the main objective of making the code less coupled and hence
more maintainable.

Examples of the modifications carried out are:
 * Network MVC: the simulated network is now modelled using an MVC
   pattern. Strategy objects operated on the network state via the
   network controller, which updates the network model, which, in
   turn updates the view. The view then feedbacks the state of the
   network to the strategy.
 * Decoupling of data collectors and strategies.
 * Use of proxy objects and plugin registration systems throughout
   the code for function with several possible implementations,
   e.g. strategies, cache replacement policies, data collectors,
   topology factories and so on.
Move topology files to resources/topologies

This commit moves the topology files from scenarios/resources to
resources/topologies for consistency with current architecture.
Add Leave Copy Down (LCD) strategy implementation
Add implementation of Bernoulli random strategy