Added granularity option

Added ability to specify granularity from {seconds, minutes, hours, days, weeks, months, years}.  The granularity indicates the smallest interval of time that is displayed in the string.  For example, if the true time difference is 30 minutes and the granularity is seconds or minutes, the string will be "30 minutes" but if the granularity is hours, it will be "an hour"