Allow non-admin users to access plug-in

from Codex

function add_theme_caps(){
 global $pagenow;

 if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){ // Test if theme is activated
  // Theme is activated
  // gets the author role
  $role = get_role( 'author' );

  // This only works, because it accesses the class instance.
  // would allow the author to edit others' posts for current theme only
  $role->add_cap( 'edit_others_posts' ); 
 }
 else {
  // Theme is deactivated
  // Remove the capacity when theme is deactivated
  $role->remove_cap( 'edit_others_posts' ); 
 }
}
add_action( 'load-themes.php', 'add_theme_caps' );

with small edit to make author can install,edit and activate plugins

function add_theme_caps(){
    global $pagenow;

    if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){ // Test if theme is activated
    // Theme is activated
    // gets the author role
    $role = get_role( 'author' );

    // This only works, because it accesses the class instance.
    // would allow the author to edit others' posts for current theme only
    $role->add_cap( 'activate_plugins' ); 
    $role->add_cap( 'edit_plugins' ); 
    $role->add_cap( 'install_plugins' ); 
}
else {
    // Theme is deactivated
    // Remove the capacity when theme is deactivated
    $role->remove_cap( 'edit_others_posts' ); 
}
}
add_action( 'load-themes.php', 'add_theme_caps' );