Feature particles

Hi everyone,
this pull request is to integrate the implementation of the stand-alone clases of the particles group.
There are currently four files:
    - abstractparticles.py: where the ABC is defined and some common parts of the clases.
    - particlesclasses.py: here is the implementation of the ParticleContainer, Particle and Bond classes.
    - pcexceptions.py: here I defined some custom exceptions to make the code clearer, I though it was a good   idea to keep them centralized in a file.
    - test_particlesclasses.py: unit tests of all the clases.

Thanks for reviewing it and any comments, suggestions and improves would be appreciatted.
> You are right, so I fixed this so now there is no instance check. I have a question regarding this. If we can't do instance checking here, how do we prevent that the user inserts a Particle using add_bond or a Bond using add_particle?

A short answer is that, we do not. The idea is that we follow that concepts of dynamic tying. If it quacks like a duck it is probably a duck so we treat it like a duck. As long as the interfaces between a Bond and Particle are different passing a bond on `add_particles` will raise an error when the `add_particles` will try to access the coordinates attribute. The error will still happen but a couple function calls later. 

Please also note that the main problem with `isinstance` is that alien adapters that wrap extrnal code will not necessary return Particles that are either registered to or a subclass the abstract python type, doing so in some case might be a little tricky. So for the time, we should make sure that the right part of the Particle and Bond api are used to flesh out such errors, which also means that we are very careful with the use of `deepcopy` (which is probably necessary most of the time).