[C150_I] Replaced Stack<char> with List<char>, further optimized searching.

- Further optimized execution time by replacing Stacks with Lists. Stack was
  used so the next character could be popped off of the top and the remaining
  Stack could be passed to the next Word candidate. Now the first list item is
  called directly and the remaining characters are passed to the next candidate
  with a list.Skip(1).ToList() call. The lists have to be constructed, but
  there are far less lists being constructed than there were stacks (since
  reading the first element doesn't pop the list and modify it, it doesn't need
  to be cloned.)
- Altered Phrase's GetNextSignificantPhrases method again: the longest words
  now has a Weight floor and ceiling to search within. This still provides
  relevant results but cuts processing time down more.