jckarter/clay — pull request #483 by stepancheg (2013-01-15 23:38:41+00:00)
Title: Sequence construction API refactoring using tuples

### What is it

This is alternative refactoring of sequence construction API. Another version is here: #480. This version uses tuples instead of `elements` function.

### Description

Before this commit `Vector` functions were over-overloaded: call
to

```
Vector[T](a)
```

could interpret `a` as a sequence or as an element parameter. This
is over-overloading that make code harder to read and maintain.

This commit changes sequence construction API. New convention is
proposed:

Let `Foo` be sequence type.

Calls

```
Foo(arg)
Foo[T](arg)
```

assume arg is a sequence. Call

```
foo(..args)
```

interpret args as elements for new foo sequence. Latter call does
not work when args list is empty (because type parameter for `Foo`
cannot be infered and thus must be specified).

To deal with this issue, fourth constructor is added: with elements
passed in tuple:

```
Foo[T]([..args])
```

This patch changes vector, queue and deque.

### Note

This pull request cannot be merged right now, because it reveals issue #482.