Backwards compatible refactor of sfrAnalytics

scoped reports API access to sfranalytics.reports and dashboard API to sfranalytics.dashboard. Implemented methods sfranalytics.reports.metadata(reportId) and sfranalytics.reports.run(reportId, options). Options object on method sfranalytics.reports.run is not required but can be used to pass reportFilters array, reportBooleanFilter logic statement, and includeDetails. Note, async report run not supported yet.

example options object
    var options = { 
        includeDetails: true,
        reportBooleanFilter: "1AND2",
	reportFilters: [
            {
                "value": "DataMart",
                "operator": "notEqual",
                "column": "ACCOUNT.NAME"
            },
            {
                "value": "AdminUser",
                "operator": "notEqual",
                "column": "USERS.NAME"
            },
        ]
    };