Moved the admin notices hook to the admin class, not needed to load on frontend site stuff.
Moved admin custom post type stuff to class files and make sure they only are loaded on admin side.
Also move the save_post actions to the admin class to make sure they are only hooked in on the admin side.
Disable eShop not fully implemented yet.
Use the s2Member is_active() function, this function also checks if the constant is defined.
Only hook in the action and filter if AppThemes is active.
Removed duplicate.
Fixed typo.
Updated tested up to values.
Make sure the s2Member user update is only executed when payment status is changed from 'unknown' to 'success'.
Added an package.json file for Grunt.
Added newline at end of file.
Ignore Grunt files.
Updated package.json file.
Added 'jshint' to Grunt file.
Improved warning by 'jshint':

[L7:C21] W004: 'element' is already defined.
    var element = $( element );
Fixed lintjs warning:

Linting Gruntfile.js ...ERROR
[L16:C1] W099: Mixed spaces and tabs.
      }
Fixed some jshint warnings:

[L41:C16] W099: Mixed spaces and tabs.
                  display = true;
[L100:C4] W099: Mixed spaces and tabs.
            $( '<option>' )
Applied jshint suggestion:

[L132:C35] W009: The array literal notation [] is preferable.
      var fields = new Array();
[L146:C35] W009: The array literal notation [] is preferable.
      var inputs = new Array();
Now also use Grint phplint.