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.