Permutation + bugfix

new feature
- use query to easliy build permutations

bugfix
- \#take used to iterate whole iterable in every case
note: the important part is the next check: the iterator is not called until #hasNext == false - therefore I would end up doing this, but this does not work:

```
Iterable<Object> underlying = new ArrayList<Object>(asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
Iterable<Object> iterableSpy = spy(underlying);
Iterator<Object> iteratorSpy;
when(iterableSpy.iterator()).thenReturn(iteratorSpy = spy((Iterator<Object>) underlying.iterator()));

assertThat(from(iterableSpy).take(2).asArrayList()).containsExactly(1, 2);
verify(iterableSpy.iterator(), times(1));		// only 1 iterator was created
verify(iteratorSpy.next(), times(2));			// only 2 elements were retrieved from iterator
```

org.mockito.exceptions.base.MockitoException: 
Mockito cannot mock this class: class java.util.AbstractList$Itr.
Most likely it is a private class that is not visible by Mockito
	at ch.julien.query.core.TraversableImplTest.testTake(TraversableImplTest.java:814)
	...