Remove rename invoke_clean to invoke & drop invoke

This commit creates a single entry point: project.invoke &
pipeline.invoke. Invoke can now handle these use cases correctly:

1. New files are detected and processed
2. Changes to the assetfile are refelected
3. Invoke'ing then invoke'ing again will not rebuild the files unless
   there have been changes
4. Any other previous use cases of invoke or invoke clean

The perf tools has also been updated
Fix bug with nested matchers

Filters need a pipeline assigned to read a manifest from. Match calls
Pipeline#copy. #copy evaluates the block before assigning attributes
like pipeline and rake application. This commit changes copy to build up
the new instance correctly then evaluate the DSL block.
Merge pull request #108 from twinturbo/remove-invoke

Remove rename invoke_clean to invoke & drop invoke
Merge pull request #110 from twinturbo/nested-matcher-fix

Fix bug with nested matchers
Add failing test
Don't raise error for legit tmp files

This commit fixes an error when chaining multiple filters. Filters will
correctly put files inside the tmp directory. This commit verifies that
all files are not inside the tmp directory when input_files is
calculated. This will raise an error when you match files inside the
pipeline's tmp dir or specifically add it as an input
Version bump 0.8.0

All the work on pipeline invocation fixes and new filters/matchers
should have it's own release.
No double task lookup
Use quicker fingerprint
Reintroduce last_manifest/manifest

I had previously removed the 2 manifest concept from the code. I thought
this was ok because the tests were passing. There weren't enough tests
to cover all use cases. Two manifests are needed for tracking changes in
dynamic prerequisites between invocations. Here's the use case: you have
a file dynamic file A that imports B. Inovking A will _always_ update
B's mtime in the manifest. This causes dependency modification check
results to be false positives.
Use integer time instead of Time objects

Parsing times is slow. This takes up a lot of time when loading large
manifests. Using integer timestamps should also work better across
multiple platforms. We also completley avoid timezone math.
Completely skip computation if nothing has changed

This commit introduces a global dirty state. This check is used when
invoking a project. It checks to see if any of the known files have
changed, or if any files have been deleted or added. Projects are dirty
if the assetfile has changed. When projects are clean invoking them does
nothing. This check saves costly build time. The build tree is
constructed internally every time. This can be costly. Running those
rake tasks would not change anything anyway so that process can be by
passed.

This commit should make the preview server much faster. Say you have a
set set of assets: images, application.js, application.css, and
index.html. Opening the preview server will send an HTTP request for
index.html. This request will compile the pipeline. Further requests to
application.js, application.css and images should return almost
instantly because pipeline does not have to do any processing.
Middleware should take a project

Refactor the server/middleware to take a project instance. This change
does not instantiate a new project for every HTTP request. This prevents
needless resetting and rebuilding between requests. Mainly this ensures
that manifest objects maintain state between HTTP requests.
Merge pull request #117 from twinturbo/performance

Performance Fixes: from the very small to very large
Merge pull request #109 from twinturbo/tmp-error-fix

Tmp error fix
Merge pull request #116 from twinturbo/patch-2

Version bump 0.8.0
Move YARD gems into docs group
Fix test failure caused by JRuby's different handling of sort
Fix Rubinius test failures