Write a complete Java program with the following specifications:
- Display a welcoming message such as: "Welcome to Cubing Program!"
- Prompt the user twice to enter two positive whole numbers, indicating starting and finishing values, first one being smaller than the second one
- Calculate the cube of each number from starting value to finishing value and then display an appropriately headered two column table with each row containing the number and its cube
- Display a farewell message such as: "Goodbye, thank you for using our program!"
As an example, if the starting and finishing values were 2 and 4 respectively, the table in the output would look something like the following:
Number Cube
2 8
3 27
4 64
Ensure that the program is appropriately documented throughout and thoroughly tested to demonstrate its correct operation.