Read and evaluate streams line by line

Parse streams like STDIN line by line instead waiting for the input
to terminate before starting the evaluation. This makes reading from
pipes significantly faster and uses way less memory.

Both reading from file and from stream use a new function, hash_string,
to process their input. This makes the main function cleaner.
Fix style typo & remove unnecessary #include
Add -p option to mkdir to enable multiple rebuilds

Add the -p option to mkdir in the 'prepare'-rule to make it possible
to rebuild the program. Without the option you had to make 'clean'
before every new build, otherwise the 'prepare'-rule would fail.