Add a mean to get an index, allowing iterations of the queue.

With this change, one can iterate over the queue:

```go
for i := 0; i < q.Length(); i++ {
	if q.Get(i).(int) != i {
		t.Errorf("index %d doesn't contain %d", i, i)
	}
}
```

Tests output:

```
$ go test -v 
=== RUN TestQueueLength
--- PASS: TestQueueLength (0.00 seconds)
=== RUN TestQueueGet
--- PASS: TestQueueGet (0.01 seconds)
=== RUN TestQueueGetOORPanic
--- PASS: TestQueueGetOORPanic (0.00 seconds)
	queue_test.go:51: got panic as expected: index out of range
	queue_test.go:65: got panic as expected: index out of range
PASS
ok  	github.com/eapache/queue	0.022s
```
This benchmark show 1ns difference (11% penalty):

```go
func BenchmarkQueueGet(b *testing.B) {
	b.Logf("boundcheck=%v", boundCheck)

	q := New()
	for i := 0; i < b.N; i++ {
		q.Add(i)
	}
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		q.Get(i)
	}
}
```

With bound checks:
```bash
$ go test -bench BenchmarkQueueGet                                                         
PASS
BenchmarkQueueGet	100000000	        15.8 ns/op
--- BENCH: BenchmarkQueueGet
	queue_test.go:95: boundcheck=true
	queue_test.go:95: boundcheck=true
	queue_test.go:95: boundcheck=true
	queue_test.go:95: boundcheck=true
	queue_test.go:95: boundcheck=true
ok  	github.com/eapache/queue	7.622s
```
Without bound checks:
```bash
$ go test -bench BenchmarkQueueGet
PASS
BenchmarkQueueGet	100000000	        14.1 ns/op
--- BENCH: BenchmarkQueueGet
	queue_test.go:95: boundcheck=false
	queue_test.go:95: boundcheck=false
	queue_test.go:95: boundcheck=false
	queue_test.go:95: boundcheck=false
	queue_test.go:95: boundcheck=false
ok  	github.com/eapache/queue	7.475s
```

IMHO, the debugging mess I can see myself getting into is not worth the nanosec.