New implementation without duplicates

Rename Rake::Task#prerequisite_tasks! to
Rake::Task#all_prerequisite_tasks.

Reimplement Rake::Task#all_prerequisite_tasks to not return duplicates.

Add protected helper method to recursively collect dependencies
rejecting duplicates.

Abstract tests from returned list order.

Signed-off-by: João Soares <jsoaresgeral@gmail.com>