Triangle facts feature

Done with explorations of caching.  Back to the basics with this version.
Generally I try to find a way around using a long series of `puts` statements, but Joe's made it hard here by requiring different messaging for different types. However, you could do something like this:

```ruby
def triangle_shape_description
  if is_equilateral?
    "equilateral!"
  elsif is_isoceles?
    "isosceles! Also, that word is hard to type."
  else
    "scalene and mathematically boring."
  end
end

# ...

def recite_facts
  puts "This triangle: #{object_id}, is #{triangle_shape_description}."
  puts "The angles of this triangle are #{ angles_from_sides.join(', ') }"
  puts "This triangle is also a right triangle!\n" if angles_from_sides.include? 90
end
```

Alternatively, you could have something that classifies the type & returns a symbol that could be used as a lookup in a hash of messages. I'll leave that as an exercise for the enthusiastic reader.