Random.sample implemented

@subutai what do you think? This implementation may not be efficient when sampling a small number from a very large population but it has the potentially nice property of the selection being in the same order as the population.

Fixes #198.

See also numenta/nupic#1383
I think that we need more robust error checks. For example, if nSample is greater than nPopulation, this function will leave some slots in the sample array uninitialized. This is most likely user error, and we could help the user a lot by raising an exception. For example, this is what the python code does:

```
----> 1 random.sample([1], 2)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.pyc in sample(self, population, k)
    318         n = len(population)
    319         if not 0 <= k <= n:
--> 320             raise ValueError("sample larger than population")
    321         random = self.random
    322         _int = int

ValueError: sample larger than population
```