Merge pull request #3 from tmjbradley/master

Merge tidied code and readme changes
Refactor step 1 of build_tree into compute_child_tag_masks
Encapsulate the child tag mask computation into child_tag_mask()
  function.
Use a device_ptr in expand_active_nodes so that we don't need to use raw_pointer_cast elsewhere.
Encapsulate the child interval search into find_child_bounds() function.
Replace add_step with a placeholder expression.
Note the existence of child_tag_mask()
Refactor the third tree building step into classify_children().
Refactor step 4 of build_tree into enumerate_nodes_and_leaves().
Eliminate num_nodes variable.
Refactor step 5 of build_tree() into create_child_nodes().
Refactor step 5 of build_tree() into create_leaves().
Eliminate num_leaves variable
Refactor step 7 of build_tree() into activate_nodes_for_next_level().
Eliminate num_active_nodes variable
Put all the debug printing functions used by exercise.cu into util.h.
mark_nodes -> classify_node
expand_active_nodes -> child_index_to_tag_mask
Use tabulate instead of transform to compute child tag masks
size_t -> int
Provide generate_random_points as a utility.
Eliminate use of std::distance in favor of arithmetic.
Use the printing facilities in spoilers.cu
Some formatting changes to exercise.cu