Fixed concat operator so type synonyms are taken care of e.g. x ++ y where x :: [Note] and y :: Chord
Added [Note], [[Note]], and [Chord] to list of allowable types for the main expression; fixed cons operator to work when first element is of of type [Note] or Chord and second element is of type System
Fixed diff_types function to work properly with nested types; added eventual_system function to check for nested System as main expression type
Fixed problem with lists containing beats and powers of two, these are now treated as lists of beats in terms of type checking