Squashed commit of the following:

commit 6c925e309c8460edaf1694e70b13abafbdab4b96
Merge: cff41dd 6802e34
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Wed Dec 11 12:40:34 2013 -0600

    Merge branch 'master' of https://github.com/rubysolo/dentaku

commit cff41dd7a5abfdf5340c682fd354dd7928dceae3
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Wed Dec 11 11:05:43 2013 -0600

    Add support for external functions

    commit 7314695216f40c10141548b493ce4f00766f6b03
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 11:04:33 2013 -0600

        Update README.md with documentation on adding external functions

    commit 3690ddfd5dffeb0663548f094ee2bed8007d75e8
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:43:31 2013 -0600

        Move external function specs to their own file

    commit 5af8f0942b943fd4db0e43c62ececfe5fa09afe0
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:43:16 2013 -0600

        Replace Rules#add_rules with #add_rule

    commit d114c8213e112ac200a7a3e57250fc70211516dc
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:42:52 2013 -0600

        Add Calculator#add_rule()

    commit 644fc6549f514e310b48a1c462bf51c8d5ffc7a2
    Merge: 2ef6081 5e15722
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:30:13 2013 -0600

        Merge branch 'external_funcs' of github.com:CraigCottingham/dentaku into external_funcs

    commit 2ef6081ee99a2e62475aec464de475ac9b537011
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:28:25 2013 -0600

        Move more of the function's token pattern into Rules.add_rules

    commit 6b5fc8dd3836a3fc101347836ffd64c6cdd19863
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:14:37 2013 -0600

        Add specs to test external functions

    commit 593209183a816b42b1dd9b2036638491e02ca0b9
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:47:01 2013 -0600

        Return self from Calculator#add_rules()

        Enables chaining.

    commit 32fd542611ba7d4ac134e0902fb69537e5b47ee8
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:42:22 2013 -0600

        Add external function bodies to Rules

    commit 41619c9e2bfabdf1265d852cecad292b3996a20b
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:41:09 2013 -0600

        Add initial support for calling external functions to Evaluator#evaluate_step()

    commit 7447902c00276b9a6577ac0771ec6ce67f5de574
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:22:12 2013 -0600

        Add add_rules method to Calculator

    commit da45106fcf4b36704609d982ed512355239dce39
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:21:41 2013 -0600

        Add self.add_rules to Rules to add new rules to the rulebase

        New rules need to be added to the *beginning* of the rulebase. Is this a precedence thing?

    commit 2925191d99e27b7bd76d890151a3e3bb41c0528c
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:03:56 2013 -0600

        Add method_missing and respond_to_missing? to TokenMatcher

        This will facilitate adding arbitrary functions at runtime. I don't much like returning true for everything in respond_to_missing?, so maybe a lookup table should be added later.

    commit 5e157221fe4cbf7f0d2a26506eb57ab12bc1ba28
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:28:25 2013 -0600

        Move more of the function's token pattern into Rules.add_rules

    commit 86d14642fe2ed281053fb3927f4decfc2981c12b
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 10:14:37 2013 -0600

        Add specs to test external functions

    commit 0fbcd2b304b168a7f0c5c1ef164aedf79a395e4d
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:47:01 2013 -0600

        Return self from Calculator#add_rules()

        Enables chaining.

    commit 0b7bf52b6e9d330c8b409d5ee92f61ebc26304ae
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:42:22 2013 -0600

        Add external function bodies to Rules

    commit b87e4a8fe737f818d0e892daad399d02dd1ea0c2
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:41:09 2013 -0600

        Add initial support for calling external functions to Evaluator#evaluate_step()

    commit 2d785c7fac3c7e8580eacb9f4eba09ecb25fb615
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:22:12 2013 -0600

        Add add_rules method to Calculator

    commit b233f788dbc45db6ae04244ae2400fb4ae881064
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:21:41 2013 -0600

        Add self.add_rules to Rules to add new rules to the rulebase

        New rules need to be added to the *beginning* of the rulebase. Is this a precedence thing?

    commit 9c915aab3b35a6d9d55bc74918706391366754ef
    Author: Craig S. Cottingham <craig@nexushq.com>
    Date:   Wed Dec 11 09:03:56 2013 -0600

        Add method_missing and respond_to_missing? to TokenMatcher

        This will facilitate adding arbitrary functions at runtime. I don't much like returning true for everything in respond_to_missing?, so maybe a lookup table should be added later.

commit 88bc6836466a24789ff100d26eebda6a889641a6
Merge: 91e9600 e63b236
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Wed Dec 11 10:29:58 2013 -0600

    Merge branch 'master' of github.com:CraigCottingham/dentaku

commit 91e9600e64118b6a30c1181dc3647114adf10f82
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Tue Dec 10 16:46:19 2013 -0600

    Change the definition of a function to an identifier followed by an open parenthesis

    This will make it a little easier to add more functions in the future.

commit 2bc381d6adf4e8f514b83f7cce09b3ca97e1af95
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Tue Dec 10 16:45:13 2013 -0600

    Update documentation

commit c19c517607f088c99a8ae50abad9b046a3b6a95b
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Tue Dec 10 16:43:45 2013 -0600

    Add more specs

commit 2820ce7ebefb3efd278e5ea8806dcdca539d1d1f
Author: Craig S. Cottingham <craig@nexushq.com>
Date:   Tue Nov 19 16:56:25 2013 -0600

    Ignore RVM config files

commit d9eff2859908b3a2204ca4cff1418f2d73e81604
Author: Mark Brocato <mvbrocato@gmail.com>
Date:   Sat Nov 9 17:12:13 2013 -0500

    added support for % operator
Merge pull request #9 from CraigCottingham/pr

Add support for external functions
add unary minus for negation
add support for % as percentage operator
add license to gemspec
add console task
add example of defining an external function
add variadic-arity external function example
feed the OCD
simplify
require less knowledge of Dentaku internals to add external functions
make language around external functions consistent
release version 1.0
test on more rubies
fix ironic missing closing parenthesis
better error messages for unmatched token streams
simplify evaluate_step function