TruthTable: Create TruthTable module

Create TruthTable module with 'truthTable :: Int -> [[Bool]]' function. The
original purpose for this function is testing an `eval :: Wff -> Bool`
function which will be implemented shortly. truthTable has been placed in
its own module because it is easy to imagine other uses for it in the
future.
TruthTable: Replace 'take n . repeat' with 'replicate n'.
TruthTable: Modify the implementation of 'truthTable :: Int'

Modify the implementation of 'truthTable :: Int' to return a list of the
rows in the truth table rather than a list of the columns.
TruthTable: Implement 'assignments :: [Name] -> [[(Name, Bool)]]'
Wff: Start to implement 'eval :: Wff -> Assignment -> Bool'

Start to implement 'eval :: Wff -> Assignment -> Bool' with simple test
case for the wff "p".
Wff: Improve tests for 'eval :: Wff -> Assignment -> Maybe Bool'

Add another test for 'eval :: Wff -> Assignment -> Maybe Bool' to check
all assignments for the wff "p".
TestWff: Refactor testEval

Refactor calculated "actual" values to a local variable.
Create files for cabal to manage build

Move source files to 'src' subdirectory and tests to 'testsuite'
subdirecotry. Add Setup.hs and theorem.cabal to manage build with
cabal.
Add test suite section to 'theorem.cabal'
Merge branch 'eval' into cabal
Move source files to correct directories after merge.

Move 'TruthTable.hs' to 'src' directory and 'TestTruthTable.hs' to
'testsuite' directory.
Utils: Implement 'makeTestList'

'makeTestList :: (Eq a, Show a) => [a] -> [a] -> Test' is an
abstraction for a common pattern in my test cases.
Wff: Finish implementing 'eval :: Wff -> Assignment -> Maybe Bool'
Cabal: Remove version requirements for dependencies
TestWff: Use TruthTable.assignments to generate assignments for test cases
TestWff: Add test cases with three variables