Refactor and Managing 3 cases.

Refactor Line abstractions in new package.
- Line (Interface)
- NullLine (NullObject and Singleton Pattern)
- EmptyLine (Singleton)
- ConcreteLine (an actual text)
- LineFactory (Factory Pattern) With static methods
- LineException
- ConcreteLine.NullTextException (Handling constructor errors in a
developer-aware way)

Refactoring names, method structure. Cleaning code.