An interval overlap operation

In this exercise we continue our work on struct `Interval`, which we have used to
illustrate overloaded operators in C#.

Add an `Interal` operation that finds the overlap between two intervals. Your starting point should be the struct Interval. In the version of struct `Interval`, provided as starting point for this exercise,
intervals may be empty.

Please analyze the possible overlappings between two intervals. There are several cases that
need consideration. The fact that `Interval` is oriented may turn out to be a complicating factor in the solution.
Feel free to ignore the orientation of intervals in your solution to this exercise.

Which kind of operation will you chose for the overlapping operation in C# (method, property, indexer, operator)?

Before you program the operation in C# you should design the *signature* of the
operation.

Program the operation in C#, and test your solution in an `Interval` client program. You may chose to revise the Interval client program from the teaching material.