[maven-release-plugin] prepare for next development iteration
Roll project.clj for 0.5.9-SNAPSHOT
TCHECK-28: Call vec on input to gen/elements to support more collections

This means collections that don't support nth can still be used with
gen/elements, and also that generation is constant-time.

Signed-off-by: Reid Draper <reiddraper@gmail.com>
Better sizing for recursive generators

In general, generators should 'grow' linearly with size parameter. For
example, a tree generator given a size of 20 should have approximately
twice as many leaf nodes (internal nodes is another story) as the same
generator with a size of 10. This change brings us much closer
(exactly?) to that. Previously, when we recurred, we simply halved the
size. This did not lead to linear growth. Instead, we now first start by
treating the size as the maximum number of desired leaf nodes. We then
generate a height: 1 to 5. It's important to note that we start with a
height of 1, and not 0, since the whole point of this is to wrap the
inner generator in a tree. Once we have the maximum number of leaf
nodes, and the height (h), we can solve for the branching the branching
factor (k):

k = number-of-nodes ^ (1 / h)

Now that we've determined the shape of the tree, we can use the
branching factor (k) to resize the recursive generator. Since these
sizes are almost always small (under 10), we take care to treat scalar
generators differently, and still allow them to reach the maximum size.
This means that instead of having leaf nodes with small scalar values,
the values at the leaves can still grow up to the maximum size.

It's important to note that this produces trees that, on average, are
perfectly balanced. If you require something different, you'll need to
write something specific to your use-case.

This change also introduces a new public helper function: recursive-gen,
which is useful for eliminating the boiler-plate from writing recursive
generators. Instead of having to deal with the resizing yourself, you
simply provide recursive-gen with your 'container' generator, and your
scalar generator. For example:

(gen/recursive-gen gen/vector gen/boolean)

This will generate trees of booleans.
Merge branch 'feature/recursive-generator-helpers'
Add generators for symbols, namespaced symbols,

and namespaced keywords. Also improve the generation of keywords to
include : characters, which are allowed by the spec.

Signed-off-by: Reid Draper <reiddraper@gmail.com>
Make internal generators private.

Signed-off-by: Reid Draper <reiddraper@gmail.com>
Merge branch 'feature/namespaced-symbols'
Add metadata for when some new functions were added
Add release notes for 0.5.9
Roll project.clj to 0.5.9
[maven-release-plugin] prepare release test.check-0.5.9
[maven-release-plugin] prepare for next development iteration
Update current version in README
Use `recursive-gen` in docs to simplify instructions
typo 'excepts' should be 'accepts'

Signed-off-by: Reid Draper <reiddraper@gmail.com>
Fix documentation typos

h/t @twashing
Add shuffle generator
Mention namespace of defspec macro in README

h/t @riffraff
Alphanumeric replacement and deprecation

Replace all instances of alpha-numeric with alphanumeric, and deprecate
the two generators char-alpha-numeric and string-alpha-numeric in favor
of char-alphanumeric and string-alphanumeric respectively.

Signed-off-by: Reid Draper <reiddraper@gmail.com>