public static <T> String fromCollection(final Collection<T> data) {
        return fromCollection(data, false);
    }
Attempts to determine the structure of the table from the public getters
of the collection items. The column names are derived from the method name,
e.g. getFirstNameLength() becomes "First Name Length".
Columns MAY be in declared order, but order cannot be guaranteed.
Sub-classes of {@link Number} are right aligned.

@return A {@link String} containing the markdown style table.
stroom-util/src/main/java/stroom/util/logging/AsciiTable.java